delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/01/04/03:16:41

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
Message-ID: <037b01c07628$117d5610$0200a8c0@lifelesswks>
From: "Robert Collins" <robert DOT collins AT itdomain DOT com DOT au>
To: <cygwin AT cygwin DOT com>
Subject: Fw: CloseSocket() problem
Date: Thu, 4 Jan 2001 19:26:41 +1100
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400

For the archives...
----- Original Message ----- 
From: "David McNab" <david AT rebirthing DOT co DOT nz>
To: "Robert Collins" <robert DOT collins AT itdomain DOT com DOT au>
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" <robert DOT collins AT itdomain DOT com DOT au>
> To: "David McNab" <david AT rebirthing DOT co DOT nz>; <cygwin AT cygwin DOT com>
> 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" <david AT rebirthing DOT co DOT nz>
> > To: <cygwin AT cygwin DOT com>
> > Cc: "Andrew M. Bishop" <amb AT gedanken DOT demon DOT co DOT uk>
> > 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 AT rebirthing DOT co DOT 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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019