From de4b2930f71a88358c8f1968e410f420c54853bd Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Tue, 11 Jun 2019 06:53:33 +0900 Subject: ext/socket/ipsocket.c: Use SO_REUSEADDR for local_host/port Sometimes ruby/spec fails when trying to specify local_host and local_port for TCPSocket.open. https://rubyci.org/logs/rubyci.s3.amazonaws.com/solaris11s-sunc/ruby-master/log/20190610T192504Z.fail.html.gz --- ext/socket/ipsocket.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ext/socket/ipsocket.c b/ext/socket/ipsocket.c index dadf10f6a5..4a444b3680 100644 --- a/ext/socket/ipsocket.c +++ b/ext/socket/ipsocket.c @@ -99,6 +99,11 @@ init_inetsock_internal(struct inetsock_arg *arg) } else { if (lres) { +#if !defined(_WIN32) && !defined(__CYGWIN__) + status = 1; + setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, + (char*)&status, (socklen_t)sizeof(status)); +#endif status = bind(fd, lres->ai_addr, lres->ai_addrlen); local = status; syscall = "bind(2)"; -- cgit v1.2.3