summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTomoyuki Sahara <[email protected]>2016-05-30 10:42:30 +0900
committerTomoyuki Sahara <[email protected]>2016-05-30 10:42:30 +0900
commitb2a0c9c6bf62273b734d715e6eaab4c1f2c2892c (patch)
tree15fc2876d3c1c8a8b6436d4b2114ec575d7b0c55
parent18f7b45ad133087cacc99ba2b967ca05f010a779 (diff)
parent4f6703203b73c2dcec29b1bd851ae938177fee02 (diff)
downloadmruby-b2a0c9c6bf62273b734d715e6eaab4c1f2c2892c.tar.gz
mruby-b2a0c9c6bf62273b734d715e6eaab4c1f2c2892c.zip
Merge pull request #30 from rhykw/tcpserver-reuseaddr
Use TCPServer SO_REUSEADDR
-rw-r--r--mrblib/socket.rb3
1 files changed, 3 insertions, 0 deletions
diff --git a/mrblib/socket.rb b/mrblib/socket.rb
index 2ff144080..a32a3334d 100644
--- a/mrblib/socket.rb
+++ b/mrblib/socket.rb
@@ -262,6 +262,9 @@ class TCPServer
ai = Addrinfo.getaddrinfo(host, service, nil, nil, nil, Socket::AI_PASSIVE)[0]
@init_with_fd = true
super(Socket._socket(ai.afamily, Socket::SOCK_STREAM, 0), "r+")
+ if Socket.const_defined?(:SO_REUSEADDR)
+ self.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true)
+ end
Socket._bind(self.fileno, ai.to_sockaddr)
listen(5)
self