lynx-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

lynx-dev 2.8.2dev.8 - NSL fork still broken under AIX 4


From: Jens Schmalzing
Subject: lynx-dev 2.8.2dev.8 - NSL fork still broken under AIX 4
Date: 04 Dec 1998 01:46:57 +0100

Dear all,

here I go again.  Hopefully, the patch below fixes the problem I
encountered when enabling nsl fork on AIX4.  At least it leads to a
working binary on my system, and unlike the patch I first sent,
tracing does remain functional.

Regards, Jens.

*** 2.8.2dev.8-orig/WWW/Library/Implementation/HTTCP.c  Fri Dec  4 01:32:28 1998
--- 2.8.2dev.8/WWW/Library/Implementation/HTTCP.c       Fri Dec  4 01:38:12 1998
***************
*** 449,455 ****
            **  control variables.
            */
            pid_t fpid, waitret;
!           int pfd[2], h_length, selret, readret, waitstat = 0, cycle = 0;
            fd_set readfds;
            struct timeval timeout;
            int dns_patience = 30; /* how many seconds will we wait for DNS? */
--- 449,462 ----
            **  control variables.
            */
            pid_t fpid, waitret;
!           int pfd[2], h_length, selret, readret, cycle = 0;
! #ifdef HAVE_TYPE_UNIONWAIT
!           union wait waitstat;
! #define WAITSTAT (waitstat.w_status)
! #else
!           int waitstat=0;
! #define WAITSTAT waitstat
! #endif
            fd_set readfds;
            struct timeval timeout;
            int dns_patience = 30; /* how many seconds will we wait for DNS? */
***************
*** 573,582 ****
                    **  Make sure child is cleaned up.  -BL
                    */
                    if (!child_exited)
!                       waitret = waitpid(fpid, &waitstat, WNOHANG);
                    if (!WIFEXITED(waitstat) && !WIFSIGNALED(waitstat)) {
                        kill(fpid, SIGTERM);
!                       waitret = waitpid(fpid, &waitstat, WNOHANG);
                    }
                    break;
                }
--- 580,589 ----
                    **  Make sure child is cleaned up.  -BL
                    */
                    if (!child_exited)
!                       waitret = waitpid(fpid, &WAITSTAT, WNOHANG);
                    if (!WIFEXITED(waitstat) && !WIFSIGNALED(waitstat)) {
                        kill(fpid, SIGTERM);
!                       waitret = waitpid(fpid, &WAITSTAT, WNOHANG);
                    }
                    break;
                }
***************
*** 585,597 ****
                **  Clean up if child exited before & no data received.  -BL
                */
                if (child_exited) {
!                   waitret = waitpid(fpid, &waitstat, WNOHANG);
                    break;
                }
                /*
                **  If child exited, loop once more looking for data.  -BL
                */
!               if ((waitret = waitpid(fpid, &waitstat, WNOHANG)) > 0) {
                    /*
                    **  Data will be arriving right now, so make sure we
                    **  don't short-circuit out for too many loops, and
--- 592,604 ----
                **  Clean up if child exited before & no data received.  -BL
                */
                if (child_exited) {
!                   waitret = waitpid(fpid, &WAITSTAT, WNOHANG);
                    break;
                }
                /*
                **  If child exited, loop once more looking for data.  -BL
                */
!               if ((waitret = waitpid(fpid, &WAITSTAT, WNOHANG)) > 0) {
                    /*
                    **  Data will be arriving right now, so make sure we
                    **  don't short-circuit out for too many loops, and
***************
*** 617,631 ****
            close(pfd[0]);
            if (waitret <= 0) {
                kill(fpid, SIGTERM);
!               waitret = waitpid(fpid, &waitstat, WNOHANG);
            }
            if (waitret > 0) {
                if (WIFEXITED(waitstat)) {
                    CTRACE(tfp, "HTParseInet: NSL_FORK child %d exited, status 
0x%x.\n",
!                               (int)waitret, waitstat);
                } else if (WIFSIGNALED(waitstat)) {
                    CTRACE(tfp, "HTParseInet: NSL_FORK child %d got signal, 
status 0x%x!\n",
!                               (int)waitret, waitstat);
  #ifdef WCOREDUMP
                    if (WCOREDUMP(waitstat)) {
                        CTRACE(tfp, "HTParseInet: NSL_FORK child %d dumped 
core!\n",
--- 624,638 ----
            close(pfd[0]);
            if (waitret <= 0) {
                kill(fpid, SIGTERM);
!               waitret = waitpid(fpid, &WAITSTAT, WNOHANG);
            }
            if (waitret > 0) {
                if (WIFEXITED(waitstat)) {
                    CTRACE(tfp, "HTParseInet: NSL_FORK child %d exited, status 
0x%x.\n",
!                               (int)waitret, WAITSTAT);
                } else if (WIFSIGNALED(waitstat)) {
                    CTRACE(tfp, "HTParseInet: NSL_FORK child %d got signal, 
status 0x%x!\n",
!                               (int)waitret, WAITSTAT);
  #ifdef WCOREDUMP
                    if (WCOREDUMP(waitstat)) {
                        CTRACE(tfp, "HTParseInet: NSL_FORK child %d dumped 
core!\n",
***************
*** 634,640 ****
  #endif /* WCOREDUMP */
                } else if (WIFSTOPPED(waitstat)) {
                    CTRACE(tfp, "HTParseInet: NSL_FORK child %d is stopped, 
status 0x%x!\n",
!                               (int)waitret, waitstat);
                }
            }
            if (!success) {
--- 641,647 ----
  #endif /* WCOREDUMP */
                } else if (WIFSTOPPED(waitstat)) {
                    CTRACE(tfp, "HTParseInet: NSL_FORK child %d is stopped, 
status 0x%x!\n",
!                               (int)waitret, WAITSTAT);
                }
            }
            if (!success) {


-- 
Ohtnunk? - Ohtnunk izd mih ekaj! Ixr wijj kans unt kah
unohtentjixr jiepen unt zdehpen! (Alexander Nikopol)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]