From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Robert Collins" To: Subject: Fw: CloseSocket() problem Date: Thu, 04 Jan 2001 00:15:00 -0000 Message-id: <037b01c07628$117d5610$0200a8c0@lifelesswks> X-SW-Source: 2001-01/msg00109.html For the archives... ----- Original Message ----- From: "David McNab" To: "Robert Collins" Sent: Friday, January 05, 2001 3:18 PM Subject: Re: CloseSocket() problem > Hi Rob, > > Thanks for your unexpectedly fast reply. > > I tried doing a setsockopt() to put the socket to the browser in linger > mode, with a 5 second timeout, immediately before the close() call. > It appeared to make no difference. I enclose a code excerpt at the end of > the email. > > By the way, it's a forked child process that's interacting with the socket > connection to the browser. > > Can you offer any further suggestions? > > Regards > David McNab > > #ifndef TRY_A_LINGERING_CLOSE > { > struct linger lingeropt; > > lingeropt.l_onoff = 1; > lingeropt.l_linger = 15; > > if (setsockopt(client, SOL_SOCKET, SO_LINGER, &lingeropt, > sizeof(lingeropt)) < 0) > { > switch errno > { > case EBADF: > PrintMessage(Important, "setsockopt error: EBADF"); > break; > case ENOTSOCK: > PrintMessage(Important, "setsockopt error: ENOTSOCK"); > break; > case ENOPROTOOPT: > PrintMessage(Important, "setsockopt error: ENOPROTOPT"); > break; > default: > PrintMessage(Important, "setsockopt: unknown error"); > } > } > else > PrintMessage(Important, "setsockopt succeeded"); > } > #endif > sleep(3); > CloseSocket(client); > } > > > ----- Original Message ----- > From: "Robert Collins" > To: "David McNab" ; > Sent: Wednesday, January 03, 2001 10:42 PM > Subject: Re: CloseSocket() problem > > > > David, > > I suspect you are seeing an issue that is TCP/IP spec related, not > cygwin related. (I have squid 2.4 running on cygwin in > > several locations, without any sign of the symptoms you have). However > your symptoms sound similar to those faced by Apache and > > Squid with half closed connections. Due to tcp/ip's close sequence, and > also to general delay between send and acknowledgement of > > receipt, you cannot know that the browser has receieved the data just > because you have written it to the socket. > > > > Apache used a technique called lingering closes to solve this. You might > consider looking into that. > > > > On the other hand I could be completely off base here :-] > > > > Rob > > > > ----- Original Message ----- > > From: "David McNab" > > To: > > Cc: "Andrew M. Bishop" > > Sent: Friday, January 05, 2001 12:54 PM > > Subject: CloseSocket() problem > > > > > > > Hi Corinna, > > > > > > On searching through Cygwin mail archives, I note that you've had > problems > > > with closing down sockets in child processes. > > > > > > I have experienced the same thing. I'm presently working on testing the > > > Win32 Cygwin port of another developer's proxy server program (called > > > WWWOFFLE, see http://www.gedanken.demon.co.uk/wwwoffle/ ). > > > > > > On re-compiling the program with the cygwin v1.1.7.1 dll, I noticed > > > Microsoft Internet Explorer complaining that the server connections had > been > > > reset. > > > > > > I have added code to the applicable child process which fcntl()'s the > client > > > socket to blocking mode, then writes a byte of data. This is an attempt > to > > > ensure that all data send()'ed to Internet Explorer has actually been > sent > > > prior to the CloseSocket(). This hack seems to improve things > dramatically, > > > but the problem still shows when sending larger volumes of data back to > > > Internet Explorer. > > > > > > Can you please advise on the status of this CloseSocket() problem, and > > > 1) Any suggestions for a workaround, and/or > > > 2) Whether there are any interim fixes available > > > > > > Kindest thanks in advance > > > David McNab > > > david@rebirthing.co.nz > > > > > > > > > > > > -- > > > Want to unsubscribe from this list? > > > Check out: http://cygwin.com/ml/#unsubscribe-simple > > > > > > > > > > > > -- Want to unsubscribe from this list? Check out: http://cygwin.com/ml/#unsubscribe-simple