Skip to content

Commit

Permalink
Problem: shutdown asserts if WSASTARUP wasn't done previously
Browse files Browse the repository at this point in the history
This is a silly assertion that causes problems if libzmq.dll is
called in some esoteric ways.

Solution: if the shutdown code detects WSANOTINITIALISED, then
exit silently.

Fixes zeromq#1377
Fixes zeromq#1144
  • Loading branch information
hintjens committed Apr 20, 2015
1 parent 0673cd4 commit 594e3dc
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions src/signaler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,14 @@ zmq::signaler_t::~signaler_t ()
const struct linger so_linger = { 1, 0 };
int rc = setsockopt (w, SOL_SOCKET, SO_LINGER,
(const 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);
// Only check shutdown if WSASTARTUP was previously done
if (rc == 0 || WSAGetLastError () != WSANOTINITIALISED) {
wsa_assert (rc != SOCKET_ERROR);
rc = closesocket (w);
wsa_assert (rc != SOCKET_ERROR);
rc = closesocket (r);
wsa_assert (rc != SOCKET_ERROR);
}
#else
int rc = close_wait_ms (w);
errno_assert (rc == 0);
Expand Down

0 comments on commit 594e3dc

Please sign in to comment.