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]
