From 151a80619bf3f9c4696788f79cd2c934ed26246d Mon Sep 17 00:00:00 2001 From: KIU Shueng Chuan Date: Sat, 29 Dec 2012 18:05:15 +0800 Subject: [PATCH] set SO_LINGER on first signaler socket to close in order to avoid TIME_WAIT state. --- src/signaler.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/signaler.cpp b/src/signaler.cpp index fae06e35..5c86a6aa 100644 --- a/src/signaler.cpp +++ b/src/signaler.cpp @@ -95,7 +95,11 @@ zmq::signaler_t::~signaler_t () int rc = close (r); errno_assert (rc == 0); #elif defined ZMQ_HAVE_WINDOWS - int rc = closesocket (w); + struct linger so_linger = { 1, 0 }; + int rc = setsockopt (w, SOL_SOCKET, SO_LINGER, + (char *)&so_linger, sizeof (so_linger)); + wsa_assert (rc != SOCKET_ERROR); + rc = closesocket (w); wsa_assert (rc != SOCKET_ERROR); rc = closesocket (r); wsa_assert (rc != SOCKET_ERROR);