From a5b987619f4b793203f6a50e424fe98c5b0794ba Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 18 Jun 2012 20:32:39 +0000 Subject: epoll*: favor shutdown(2) for keepalive timeout Triggering Errno::EBADF is tricky in multithreaded situations due to possible race conditions and yet-to-be discovered bugs. shutdown(2) is also safe against apps the fork() internally but do not execve(2) nor set FD_CLOEXEC. n.b. calling fork() after pthreads are spawned may not be safe on all platforms w.r.t. malloc, but /is/ the case for glibc on GNU/Linux. --- lib/rainbows/epoll/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rainbows/epoll/client.rb b/lib/rainbows/epoll/client.rb index 891e959..f690d85 100644 --- a/lib/rainbows/epoll/client.rb +++ b/lib/rainbows/epoll/client.rb @@ -181,7 +181,7 @@ module Rainbows::Epoll::Client end def timeout! - close + shutdown true end -- cgit v1.2.3-24-ge0c7