From 5e71b7b87d7dca1c4b823172f011d4f59eea6fd8 Mon Sep 17 00:00:00 2001 From: rfm Date: Fri, 1 Oct 2010 09:22:52 +0000 Subject: [PATCH] standardise listen backlog git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31455 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 10 ++++++++++ Source/GSFileHandle.m | 3 ++- Source/GSNetwork.h | 7 +++++++ Source/GSSocketStream.m | 4 +--- Source/NSMessagePort.m | 3 ++- Source/NSSocketPort.m | 2 +- Source/win32/GSFileHandle.m | 3 ++- 7 files changed, 25 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index aab5df006..7d9693f5e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2010-10-01 Richard Frith-Macdonald + + * Source/GSSocketStream.m: + * Source/NSSocketPort.m: + * Source/NSMessagePort.m: + * Source/win32/GSFileHandle.m: + * Source/GSNetwork.h: + * Source/GSFileHandle.m: + Standardise the backlog parameter to listen() calls. + 2010-10-01 Richard Frith-Macdonald * Source/NSURL.m: Fix for bug #31153 ... allow hash in path when diff --git a/Source/GSFileHandle.m b/Source/GSFileHandle.m index 48b945056..3837460cd 100644 --- a/Source/GSFileHandle.m +++ b/Source/GSFileHandle.m @@ -39,6 +39,7 @@ #import "Foundation/NSByteOrder.h" #import "Foundation/NSProcessInfo.h" #import "Foundation/NSUserDefaults.h" +#import "GSNetwork.h" #import "GSPrivate.h" #import "GNUstepBase/NSObject+GNUstepBase.h" @@ -922,7 +923,7 @@ NSString * const GSSOCKSRecvAddr = @"GSSOCKSRecvAddr"; /* We try to allow a large number of connections. */ - if (listen(net, 10000) == -1) + if (listen(net, GSBACKLOG) == -1) { NSLog(@"unable to listen on port - %@", [NSError _last]); (void) close(net); diff --git a/Source/GSNetwork.h b/Source/GSNetwork.h index 15c18830d..efdf6ed01 100644 --- a/Source/GSNetwork.h +++ b/Source/GSNetwork.h @@ -74,6 +74,13 @@ #endif /* __MINGW__ */ +/* The backlog argument to the listen() system call. + * Systems should silently truncate the backlog if they don't support one + * as large as we set, so it makes sense to set a large value in order to + * support high volume applications. + */ +#define GSBACKLOG 10000 + #ifndef INADDRSZ #define INADDRSZ 4 #endif diff --git a/Source/GSSocketStream.m b/Source/GSSocketStream.m index 5716b3ae8..0afce5e98 100644 --- a/Source/GSSocketStream.m +++ b/Source/GSSocketStream.m @@ -2444,8 +2444,6 @@ setNonBlocking(SOCKET fd) return Nil; } -#define SOCKET_BACKLOG 256 - - (void) open { int bindReturn; @@ -2499,7 +2497,7 @@ setNonBlocking(SOCKET fd) [self _sendEvent: NSStreamEventErrorOccurred]; return; } - listenReturn = listen([self _sock], SOCKET_BACKLOG); + listenReturn = listen([self _sock], GSBACKLOG); if (socketError(listenReturn)) { [self _recordError]; diff --git a/Source/NSMessagePort.m b/Source/NSMessagePort.m index d04d3c6d4..dc33d7d8b 100644 --- a/Source/NSMessagePort.m +++ b/Source/NSMessagePort.m @@ -44,6 +44,7 @@ #import "Foundation/NSFileManager.h" #import "Foundation/NSProcessInfo.h" +#import "GSNetwork.h" #import "GSPrivate.h" #import "GSPortPrivate.h" @@ -1300,7 +1301,7 @@ typedef struct { { DESTROY(port); } - else if (listen(desc, 128) < 0) + else if (listen(desc, GSBACKLOG) < 0) { NSLog(@"unable to listen on port - %@", [NSError _last]); (void) close(desc); diff --git a/Source/NSSocketPort.m b/Source/NSSocketPort.m index 0669c2dde..dbfdcd412 100644 --- a/Source/NSSocketPort.m +++ b/Source/NSSocketPort.m @@ -1664,7 +1664,7 @@ static Class tcpPortClass; (void) close(desc); DESTROY(port); } - else if (listen(desc, 128) == SOCKET_ERROR) + else if (listen(desc, GSBACKLOG) == SOCKET_ERROR) { NSLog(@"unable to listen on port - %@", [NSError _last]); (void) close(desc); diff --git a/Source/win32/GSFileHandle.m b/Source/win32/GSFileHandle.m index c13401064..bf5948959 100644 --- a/Source/win32/GSFileHandle.m +++ b/Source/win32/GSFileHandle.m @@ -43,6 +43,7 @@ #include "Foundation/NSDebug.h" #include "../Tools/gdomap.h" +#include "../GSNetwork.h" #include "../GSPrivate.h" #include @@ -923,7 +924,7 @@ NSString * const GSSOCKSRecvAddr = @"GSSOCKSRecvAddr"; return nil; } - if (listen(net, 256) == SOCKET_ERROR) + if (listen(net, GSBACKLOG) == SOCKET_ERROR) { NSLog(@"unable to listen on port - %@", [NSError _last]); (void) closesocket(net);