Re: socket close

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2007-07-04 at 15:35 +0200, Eric Dumazet wrote:

> > Otherwise the RST is sent, triggering the client
> > to close its READER, and send a RST back to the server,
> > which then shuts down its writer. Is that right?
> > 
> > [I can't see why the kernel would flush the output
> > queue just because the application hasn't shutdown
> > the input side of the link]
> 
> You may take a look at RFC 1122 ( http://www.faqs.org/rfcs/rfc1122.html )
> section 4.2.2.13  Closing a Connection: 
> 
> "A host MAY implement a "half-duplex" TCP close sequence, so
>             that an application that has called CLOSE cannot continue to
>             read data from the connection.  If such a host issues a
>             CLOSE call while received data is still pending in TCP, or
>             if new data is received after CLOSE is called, its TCP
>             SHOULD send a RST to show that data was lost."
> 
> If your app is doing a close() on a socket where incoming data is in 
> receive queue or expected to come after the close() (and this is where 
> the problem really is : depending on timing, if your app is really fast, 
> it could close the socket before the 'extra data' really hit you), 
> so the answer (RST or not) could depend on timing.
> 
> sending an RST if data is in receive queue is just to respect 
> RFC spirit : notity the other peer that data was lost.

That all seems OK to me .. but the problem is losing
data in the transmit queue, not the receive queue.



-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux