Thread (1 message) 1 message, 1 author, 2011-10-07

Re: [PATCH] close.2: Mention a need of shutdown before closing socket

From: Lukas Czerner <hidden>
Date: 2011-10-07 07:09:01

Possibly related (same subject, not in this thread)

On Fri, 7 Oct 2011, Michael Kerrisk wrote:
Lukas,

On Mon, Aug 29, 2011 at 2:26 PM, Lukas Czerner [off-list ref] wrote:
quoted
When dealing with sockets, we have to be sure that there is no recv
still blocking on it on another thread, otherwise it might block forever,
since no more messages will be send via the socket. We should advice to
use shutdown before closing socket.
I'm looking into this now. The picture may be more complex than this.
Tell me, so you have a Solaris system available for testing?

Thanks,
Hi Michael,

Thanks for looking into this. Unfortunately I do not have any Solaris system
for testing, that was a customer report. His complaint was mainly not because
the behaviour on Linux differs, but because this was not documented anywhere.

Thanks!
-Lukas
Michael

quoted
Signed-off-by: Lukas Czerner <redacted>
---
 man2/close.2 |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/man2/close.2 b/man2/close.2
index a2a2961..02472f3 100644
--- a/man2/close.2
+++ b/man2/close.2
@@ -114,6 +114,13 @@ other threads in the same process.
 Since a file descriptor may be reused,
 there are some obscure race conditions
 that may cause unintended side effects.
+.PP
+When dealing with sockets, you have to be sure that there is no
+.BR recv (2)
+still blocking on it on another thread, otherwise it might block forever,
+since no more messages will be send via the socket. Be sure to use
+.BR shutdown (2)
+to shut down all parts the connection before closing the socket.
 .\" Date: Tue, 4 Sep 2007 13:57:35 +0200
 .\" From: Fredrik Noring [off-list ref]
 .\" One such race involves signals and ERESTARTSYS. If a file descriptor
--
1.7.4.4

-- 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help