Stefan,
For some reason, my response below never made the list-serve ... not sure
what happened, but it adds some of the missing context from the discussion,
especially why Windows does not send a FIN packet for a terminated process,
and why it is not required to do so by any RFC or the OSI model.
-Paul
-----Original Message-----
From: Paul Charlton [mailto:techguru_at_byiq.com]
Sent: Thursday, October 22, 2009 7:46 AM
To: 'Peter Samuelson'
Cc: 'Bob Denny'; 'dev_at_subversion.tigris.org'
Subject: RE: Issue #2580 revisited: Windows unclean TCP close [SEVERE]
Peter,
It's not so much a bug but a *permitted* performance optimization for TCP
... the behavior keeps all in-between router's tables "hot" unless the
server side chooses to force-close its side of the TCP connection. Think of
a modern "secure" browser which has a relatively long duration session with
a server consisting of multiple individual TCP sessions whose lifetimes
don't necessarily overlap, some of which are originating from child
processes of the browser for security reasons. The half-duplex RST allows
the server to determine when the overall set of TCP sessions is done,
without triggering a router table flush which a FIN packet would allow.
The OSI layers do specifically allow for out-of-band control flow, unrelated
to read/write buffering status.
Best regards,
Paul
> -----Original Message-----
> From: Peter Samuelson [mailto:peter_at_p12n.org]
> Sent: Thursday, October 22, 2009 6:49 AM
> To: dev_at_subversion.tigris.org
> Cc: Bob Denny
> Subject: Re: Issue #2580 revisited: Windows unclean TCP close [SEVERE]
>
> [Peter Samuelson]
> > That is to say, when the client is killed, shouldn't the OS be
> > responsible for immediately closing the TCP session? Are you saying
> > your Windows kernel (I don't remember if you mentioned which version
> > of Windows you have) does _not_ do this?
>
> I can confirm that Windows Server 2008 has this bug. Using 'telnet',
> the Windows Task Manager thingy, and tcpdump on the server end, it
> seems that when you kill the client app, the OS makes _no_ effort to
> close the TCP connection. I tested with Linux (kernel 2.6.30, but I
> doubt it matters) and 'kill -9', and the kernel sends a FIN packet, and
> ACKs the FIN it gets back from the server, exactly as you'd expect.
>
> We still have no idea what Windows kernel Bob Denny is running, but
> presumably it has the same bug as Windows Server 2008.
> --
> Peter Samuelson | org-tld!p12n!peter | http://p12n.org/
>
> ------------------------------------------------------
> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageI
> d=2410225
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2411030
Received on 2009-10-24 14:44:33 CEST