From: David Schmidt Date: Mon, 11 Mar 2002 22:07:05 +0000 (+0000) Subject: OS/2 port maintenance: X-Git-Tag: v_2_9_12~61 X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=commitdiff_plain;h=57ada44f5881cab962648120ab3b88035b011f06 OS/2 port maintenance: - Fixed EMX build - it had decayed a little - Fixed inexplicable crash during FD_ZERO - must be due to a bad macro. substituted a memset for now. --- diff --git a/jbsockets.c b/jbsockets.c index 7648c2ba..86f1fde5 100644 --- a/jbsockets.c +++ b/jbsockets.c @@ -1,4 +1,4 @@ -const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.24 2002/03/07 03:51:36 oes Exp $"; +const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.25 2002/03/09 20:03:52 jongfoster Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jbsockets.c,v $ @@ -35,6 +35,30 @@ const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.24 2002/03/07 03:51:36 oes Ex * * Revisions : * $Log: jbsockets.c,v $ + * Revision 1.25 2002/03/09 20:03:52 jongfoster + * - Making various functions return int rather than size_t. + * (Undoing a recent change). Since size_t is unsigned on + * Windows, functions like read_socket that return -1 on + * error cannot return a size_t. + * + * THIS WAS A MAJOR BUG - it caused frequent, unpredictable + * crashes, and also frequently caused JB to jump to 100% + * CPU and stay there. (Because it thought it had just + * read ((unsigned)-1) == 4Gb of data...) + * + * - The signature of write_socket has changed, it now simply + * returns success=0/failure=nonzero. + * + * - Trying to get rid of a few warnings --with-debug on + * Windows, I've introduced a new type "jb_socket". This is + * used for the socket file descriptors. On Windows, this + * is SOCKET (a typedef for unsigned). Everywhere else, it's + * an int. The error value can't be -1 any more, so it's + * now JB_INVALID_SOCKET (which is -1 on UNIX, and in + * Windows it maps to the #define INVALID_SOCKET.) + * + * - The signature of bind_port has changed. + * * Revision 1.24 2002/03/07 03:51:36 oes * - Improved handling of failed DNS lookups * - Fixed compiler warnings etc @@ -160,8 +184,10 @@ const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.24 2002/03/07 03:51:36 oes Ex #if defined(__EMX__) || defined (__OS2__) #include /* OS/2/EMX needs a little help with select */ +#ifdef __OS2__ #include #endif +#endif #endif diff --git a/jcc.c b/jcc.c index edb15588..88db8b7f 100644 --- a/jcc.c +++ b/jcc.c @@ -1,4 +1,4 @@ -const char jcc_rcs[] = "$Id: jcc.c,v 1.78 2002/03/08 21:35:04 oes Exp $"; +const char jcc_rcs[] = "$Id: jcc.c,v 1.79 2002/03/09 20:03:52 jongfoster Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jcc.c,v $ @@ -33,6 +33,30 @@ const char jcc_rcs[] = "$Id: jcc.c,v 1.78 2002/03/08 21:35:04 oes Exp $"; * * Revisions : * $Log: jcc.c,v $ + * Revision 1.79 2002/03/09 20:03:52 jongfoster + * - Making various functions return int rather than size_t. + * (Undoing a recent change). Since size_t is unsigned on + * Windows, functions like read_socket that return -1 on + * error cannot return a size_t. + * + * THIS WAS A MAJOR BUG - it caused frequent, unpredictable + * crashes, and also frequently caused JB to jump to 100% + * CPU and stay there. (Because it thought it had just + * read ((unsigned)-1) == 4Gb of data...) + * + * - The signature of write_socket has changed, it now simply + * returns success=0/failure=nonzero. + * + * - Trying to get rid of a few warnings --with-debug on + * Windows, I've introduced a new type "jb_socket". This is + * used for the socket file descriptors. On Windows, this + * is SOCKET (a typedef for unsigned). Everywhere else, it's + * an int. The error value can't be -1 any more, so it's + * now JB_INVALID_SOCKET (which is -1 on UNIX, and in + * Windows it maps to the #define INVALID_SOCKET.) + * + * - The signature of bind_port has changed. + * * Revision 1.78 2002/03/08 21:35:04 oes * Added optional group supplement to --user option. Will now use default group of user if no group given * @@ -571,7 +595,7 @@ static int32 server_thread(void *data); #define sleep(N) DosSleep(((N) * 100)) #endif -#if defined(unix) +#if defined(unix) || defined(__EMX__) const char *basedir; const char *pidfile = NULL; int received_hup_signal = 0; @@ -1118,8 +1142,15 @@ static void chat(struct client_state *csp) while (FOREVER) { +#ifdef __OS2__ + /* + * FD_ZERO here seems to point to an errant macro which crashes. + * So do this by hand for now... + */ + memset(&rfds,0x00,sizeof(fd_set)); +#else FD_ZERO(&rfds); - +#endif FD_SET(csp->cfd, &rfds); FD_SET(csp->sfd, &rfds);