Thank you. The problem is there is packet lost before the final FIN, and due to incorrect sequence number, the TCP protocol at the client side only buffers the FIN. so if the server side does not resend the lost packet, client side can only rely on the time-out. -----Original Message----- From: Zhao, Forrest [mailto:forrest.zhao@intel.com] Sent: 2003年11月11日 16:42 To: Xia Wei-Zhong-W20079 Cc: linux-net@vger.kernel.org Subject: RE: need your help: about TCP Half-Close If user application uses read(); to read data from socket file descriptor, The read() returns 0 when the other side close the connection, so the user application will not block :) There is similar mechanism for select() and poll(). Am I right? Thanks -----Original Message----- From: linux-net-owner@vger.kernel.org [mailto:linux-net-owner@vger.kernel.org] On Behalf Of Xia Wei-Zhong-W20079 Sent: 2003年11月11日 15:41 To: linux-net@vger.kernel.org Subject: need your help: about TCP Half-Close Hi If one side perform a half-close, but some of the data it sends out were lost, will it still perform retransmission? For a http1.0 server, it typically closes the socket after it answers user's request. And if some of the data were lost, user application will be hung up. Can any one of you give me any suggestion? Thanks a lot, xwz - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html