Re: [Bug 106241] New: shutdown(3)/close(3) behaviour is incorrect for sockets in accept(3)
From: Eric Dumazet <hidden>
Date: 2015-10-27 12:01:12
From: Eric Dumazet <hidden>
Date: 2015-10-27 12:01:12
On Tue, 2015-10-27 at 10:52 +0000, Alan Burlison wrote:
Unfortunately Hadoop isn't the only thing that pulls the shutdown() trick, so I don't think there's a simple fix for this, as discussed earlier in the thread. Having said that, if close() on Linux also did an implicit shutdown() it would mean that well-written applications that handled the scoping, sharing and reuse of FDs properly could just call close() and have it work the same way across *NIX platforms.
Are non multi threaded applications considered well written ?
listener = socket(...);
bind(listener, ...);
listen(fd, 10000);
Loop 1 10
if (fork() == 0)
do_accept(listener)
Now if a child does a close(listener), or is killed, you propose that it
does an implicit shutdown() and all other children no longer can
accept() ?
Surely you did not gave all details on how it is really working.