diff options
| author | Paul Eggert | 2016-06-26 23:27:21 +0200 |
|---|---|---|
| committer | Paul Eggert | 2016-06-26 23:37:03 +0200 |
| commit | 2989ad906048b374653d7030ebdaea62b670eed0 (patch) | |
| tree | e05911945e6dad1249f2afea4cc6bbb6e03169f0 /src/process.h | |
| parent | d267aea2424783f5eefb6e733a6806ffd3323fa0 (diff) | |
| download | emacs-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.h | 4 |
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) |