Forwarded message from Jonathan Schilling <[EMAIL PROTECTED]>:

>Hello,
>
>Several users have found problems with lynx 2.8.x when running on the
>new Caldera Open UNIX 8 operating system (a successor to the
>SCO UnixWare 7 operating system for the IA-32 architecture).
>
>The triggering catalyst is that for some as yet unknown reason, http
>connections take a bit longer to materialize in Open UNIX 8 than they
>did in UnixWare 7.
>
>This comes into play in the code in HTTCP.c, function HTDoConnect().
>The basic algorithm there is do a non-blocking connect(), if connection
>still in progress do a select() with a time-out value, if connection still
>not ready after the time-out do another connect(), if still needs time
>go back to the select() and repeat.  On Open UNIX 8, this select()
>is tending to time out, whereas in UnixWare 7 it didn't.
>
>The actual problem is that the second connect() is tested for returning
>EALREADY and EAGAIN, in which case it goes back and retries, but in our
>case it is still returning EINPROGRESS (just like it did for the first
>connect()), in which case it is failing and reporting an error message.
>
>The fix is to add EINPROGRESS to the list of "acceptable" errors
>after the second connect().
>
>Attached is a context diff that implements this change.  It is made
>against the latest development version (lynx2.8.5dev.7).  I have tested
>it on both Open UNIX 8, where it is needed, and on UnixWare 7, where it
>isn't, and it works correctly in both places.  I'm submitting this
>change so you can include it in the lynx mainline tree.
>
>[Bela Lubkin of Caldera (and a past lynx contributor) suggests a bolder
>change, involving coalescing the errno checking after all the networking
>calls into one place, so that all these errno dependencies can be
>centralized.  It's a good notion, but I don't feel confident enough in
>my understanding of either lynx or networking across platforms to submit
>it myself.]
>
>Regards,
>
>Jonathan Schilling      Caldera International, Inc.     [EMAIL PROTECTED]
>
>
>*** ./WWW/Library/Implementation/HTTCP.c..orig  Sat Oct  6 15:02:28 2001
>--- ./WWW/Library/Implementation/HTTCP.c        Fri Mar  1 12:24:38 2002
>***************
>*** 1832,1838 ****
>                 **
>                 **  For some reason, SVR4 returns EAGAIN here instead of
>                 **  EALREADY, even though the man page says it should be
>!               **  EALREADY.
>                 **
>                 **  For some reason, UCX pre 3 apparently returns
>                 **  errno = 18242 instead the EALREADY or EISCONN.
>--- 1832,1839 ----
>                 **
>                 **  For some reason, SVR4 returns EAGAIN here instead of
>                 **  EALREADY, even though the man page says it should be
>!               **  EALREADY.  SVR4/SVR5 systems can also return EINPROGRESS
>!               **  here, just as they did on the first connect() call.
>                 **
>                 **  For some reason, UCX pre 3 apparently returns
>                 **  errno = 18242 instead the EALREADY or EISCONN.
>***************
>*** 1845,1850 ****
>--- 1846,1852 ----
>   #endif /* INET6 */
>                 if ((status < 0) &&
>                     (SOCKET_ERRNO != EALREADY
>+                   && SOCKET_ERRNO != EINPROGRESS
>   #ifdef EAGAIN
>                     && SOCKET_ERRNO != EAGAIN
>   #endif



; To UNSUBSCRIBE: Send "unsubscribe lynx-dev" to [EMAIL PROTECTED]

Reply via email to