From: oes Date: Fri, 4 Apr 2003 12:40:20 +0000 (+0000) Subject: Made sure the errno set by bind, not close[socket] is used in X-Git-Tag: v_3_0_3~124 X-Git-Url: http://www.privoxy.org/gitweb/@user-manual@@actions-help-prefix@BLOCK?a=commitdiff_plain;h=3001e6480edce804ee0cffc20c1b16f825614c68;p=privoxy.git Made sure the errno set by bind, not close[socket] is used in bind_port. Probably fixes bugs #713777, #705562. --- diff --git a/jbsockets.c b/jbsockets.c index 8efb6428..1942deac 100644 --- a/jbsockets.c +++ b/jbsockets.c @@ -1,4 +1,4 @@ -const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.35.2.2 2002/11/20 14:37:24 oes Exp $"; +const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.35.2.3 2003/03/07 03:41:04 david__schmidt Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/Attic/jbsockets.c,v $ @@ -35,6 +35,9 @@ const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.35.2.2 2002/11/20 14:37:24 oe * * Revisions : * $Log: jbsockets.c,v $ + * Revision 1.35.2.3 2003/03/07 03:41:04 david__schmidt + * Wrapping all *_r functions (the non-_r versions of them) with mutex semaphores for OSX. Hopefully this will take care of all of those pesky crash reports. + * * Revision 1.35.2.2 2002/11/20 14:37:24 oes * Fixed Win32 error logging in bind_port. * Thanks to Oliver Stoeneberg for the hint. @@ -592,11 +595,11 @@ int bind_port(const char *hostnam, int portnum, jb_socket *pfd) #ifndef _WIN32 /* * This is not needed for Win32 - in fact, it stops - * duplicate instances of Junkbuster from being caught. + * duplicate instances of Privoxy from being caught. * * On UNIX, we assume the user is sensible enough not * to start Junkbuster multiple times on the same IP. - * Without this, stopping and restarting Junkbuster + * Without this, stopping and restarting Privoxy * from a script fails. * Note: SO_REUSEADDR is meant to only take over * sockets which are *not* in listen state in Linux, @@ -605,9 +608,8 @@ int bind_port(const char *hostnam, int portnum, jb_socket *pfd) setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one)); #endif /* ndef _WIN32 */ - if (bind (fd, (struct sockaddr *)&inaddr, sizeof(inaddr)) < 0) + if (bind(fd, (struct sockaddr *)&inaddr, sizeof(inaddr)) < 0) { - close_socket (fd); #ifdef _WIN32 errno = WSAGetLastError(); if (errno == WSAEADDRINUSE) @@ -615,10 +617,12 @@ int bind_port(const char *hostnam, int portnum, jb_socket *pfd) if (errno == EADDRINUSE) #endif { + close_socket(fd); return(-3); } else { + close_socket(fd); return(-1); } }