avoid unlinking actively listening sockets
commit8612ccdd2f7f0c0b182ecc9616a76e97b879f6c0
authorEric Wong <normalperson@yhbt.net>
Mon, 4 Oct 2010 04:17:31 +0000 (4 04:17 +0000)
committerEric Wong <normalperson@yhbt.net>
Mon, 4 Oct 2010 20:14:13 +0000 (4 20:14 +0000)
treeccb42511973a71f70e663cd3d14db8124f07313a
parent206d8c77bc0ac15a5c4e7a56aeff2e9fc280e6a3
avoid unlinking actively listening sockets

While we've always unlinked dead sockets from nuked/leftover
processes, blindly unlinking them can cause unnecessary failures
when an active process is already listening on them.  We now
make a simple connect(2) check to ensure the socket is not in
use before unlinking it.

Thanks to Jordan Ritter for the detailed bug report leading to
this fix.

ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com
(cherry picked from commit 1a2363b17b1d06be6b35d347ebcaed6a0c940200)
lib/unicorn/socket_helper.rb
t/t0011-active-unix-socket.sh [new file with mode: 0644]
test/unit/test_socket_helper.rb