From 71148081f7e75bde3bfef643ad8ab18bdd462143 Mon Sep 17 00:00:00 2001 From: rfm Date: Mon, 7 Aug 2006 20:01:00 +0000 Subject: [PATCH] fix for handling stream connection failures git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@23213 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 7 +++++++ Source/unix/NSStream.m | 6 +++++- Source/win32/NSStreamWin32.m | 10 ++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0d0e10f23..d813c1f2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-08-07 Richard Frith-Macdonald + + * Source/win32/NSStreamWin32.m: + * Source/unix/NSStream.m: + If a connection attampt fails, propogate error to sibling stream so + both streams in the pair get a failure. + 2006-08-07 00:13-EDT Gregory John Casamento * Source/NSData.m: Correct issue in initWithCoder: and encodeWithCoder: diff --git a/Source/unix/NSStream.m b/Source/unix/NSStream.m index b6a91d99f..48c47e8a7 100644 --- a/Source/unix/NSStream.m +++ b/Source/unix/NSStream.m @@ -524,6 +524,8 @@ static void setNonblocking(int fd) errno = error; [self _recordError]; myEvent = NSStreamEventErrorOccurred; + [_sibling _recordError]; + [_sibling _sendEvent: myEvent]; } } else @@ -882,6 +884,8 @@ static void setNonblocking(int fd) errno = error; [self _recordError]; myEvent = NSStreamEventErrorOccurred; + [_sibling _recordError]; + [_sibling _sendEvent: myEvent]; } } else @@ -1330,7 +1334,7 @@ static void setNonblocking(int fd) return 0; } -#define SOCKET_BACKLOG 5 +#define SOCKET_BACKLOG 256 - (void) open { diff --git a/Source/win32/NSStreamWin32.m b/Source/win32/NSStreamWin32.m index 88dfc7c4b..d7dab8e3d 100644 --- a/Source/win32/NSStreamWin32.m +++ b/Source/win32/NSStreamWin32.m @@ -794,6 +794,11 @@ static void setNonblocking(SOCKET fd) if (error) errno = error; [self _recordError]; + if (_sibling) + { + [_sibling _recordError]; + [_sibling _sendEvent: NSStreamEventOpenCompleted]; + } } } else @@ -1350,6 +1355,11 @@ static void setNonblocking(SOCKET fd) if (error) errno = error; [self _recordError]; + if (_sibling) + { + [_sibling _recordError]; + [_sibling _sendEvent: NSStreamEventOpenCompleted]; + } } } else