diff options
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/process.c b/src/process.c index 5e06ccccac8..4d287d8cc51 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -5492,15 +5492,16 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 5492 | 5492 | ||
| 5493 | p = XPROCESS (proc); | 5493 | p = XPROCESS (proc); |
| 5494 | 5494 | ||
| 5495 | #ifdef GNU_LINUX | 5495 | #ifndef WINDOWSNT |
| 5496 | /* getsockopt(,,SO_ERROR,,) is said to hang on some systems. | ||
| 5497 | So only use it on systems where it is known to work. */ | ||
| 5498 | { | 5496 | { |
| 5499 | socklen_t xlen = sizeof (xerrno); | 5497 | socklen_t xlen = sizeof (xerrno); |
| 5500 | if (getsockopt (channel, SOL_SOCKET, SO_ERROR, &xerrno, &xlen)) | 5498 | if (getsockopt (channel, SOL_SOCKET, SO_ERROR, &xerrno, &xlen)) |
| 5501 | xerrno = errno; | 5499 | xerrno = errno; |
| 5502 | } | 5500 | } |
| 5503 | #else | 5501 | #else |
| 5502 | /* On MS-Windows, getsockopt clears the error for the | ||
| 5503 | entire process, which may not be the right thing; see | ||
| 5504 | w32.c. Use getpeername instead. */ | ||
| 5504 | { | 5505 | { |
| 5505 | struct sockaddr pname; | 5506 | struct sockaddr pname; |
| 5506 | socklen_t pnamelen = sizeof (pname); | 5507 | socklen_t pnamelen = sizeof (pname); |