aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.h
diff options
context:
space:
mode:
authorPaul Eggert2016-06-26 23:27:21 +0200
committerPaul Eggert2016-06-26 23:37:03 +0200
commit2989ad906048b374653d7030ebdaea62b670eed0 (patch)
treee05911945e6dad1249f2afea4cc6bbb6e03169f0 /src/process.h
parentd267aea2424783f5eefb6e733a6806ffd3323fa0 (diff)
downloademacs-2989ad906048b374653d7030ebdaea62b670eed0.tar.gz
emacs-2989ad906048b374653d7030ebdaea62b670eed0.zip
Try other addresses when connecting to multihomed
Problem reported by Juliusz Chroboczek (Bug#17976) and by Artur Malabarba (Bug#23620). Patch from a suggestion by Andreas Schwab in: http://bugs.gnu.org/17976#39 This patch is for non-MS-Windows platforms. I don't know the situation on MS-Windows. * src/process.c (connecting_status): New function, for (connect . ADDRINFOS). (connect_network_socket, check_for_dns, wait_for_socket_fds) (wait_while_connecting, wait_reading_process_output, status_notify): Use it. (decode_status, Fmake_network_process): Support (connect . ADDRINFOS) status. (connect_network_socket) [!WINDOWSNT]: If the connection failed and there are other addresses to try, do not signal an error; instead, loop around to try the next address. (wait_reading_process_output): Advance to the next address if there are multiple addresses and the first remaining address failed. * src/process.h (struct Lisp_Process.status): Adjust comment to describe (connect . ADDRINFOS).
Diffstat (limited to 'src/process.h')
-rw-r--r--src/process.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/process.h b/src/process.h
index 4430377877a..6c227bc2266 100644
--- a/src/process.h
+++ b/src/process.h
@@ -83,7 +83,9 @@ struct Lisp_Process
83 Lisp_Object mark; 83 Lisp_Object mark;
84 84
85 /* Symbol indicating status of process. 85 /* Symbol indicating status of process.
86 This may be a symbol: run, open, closed, listen, connect, or failed. 86 This may be a symbol: run, open, closed, listen, or failed.
87 Or it may be a pair (connect . ADDRINFOS) where ADDRINFOS is
88 a list of remaining (PROTOCOL . ADDRINFO) pairs to try.
87 Or it may be (failed ERR) where ERR is an integer, string or symbol. 89 Or it may be (failed ERR) where ERR is an integer, string or symbol.
88 Or it may be a list, whose car is stop, exit or signal 90 Or it may be a list, whose car is stop, exit or signal
89 and whose cdr is a pair (EXIT_CODE . COREDUMP_FLAG) 91 and whose cdr is a pair (EXIT_CODE . COREDUMP_FLAG)