aboutsummaryrefslogtreecommitdiff
path: root/src/server/ipc/ZmqContext.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-02-24 17:52:07 +0100
committerShauren <shauren.trinity@gmail.com>2016-02-24 17:52:07 +0100
commite3b162db7a54c748a33ef357f5b8151b82a29fa0 (patch)
treea1c6969ede1a37f5993a33c2b3e63e9da6ecaad8 /src/server/ipc/ZmqContext.cpp
parenta0b2be6c1d0ae17ad8a17692d77f2020bbb9296e (diff)
Core/IPC: Fixed bnet & world servers getting stuck on shutdown after having communicated at any point
Diffstat (limited to 'src/server/ipc/ZmqContext.cpp')
-rw-r--r--src/server/ipc/ZmqContext.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/server/ipc/ZmqContext.cpp b/src/server/ipc/ZmqContext.cpp
index 274759121bd..bc062de8e88 100644
--- a/src/server/ipc/ZmqContext.cpp
+++ b/src/server/ipc/ZmqContext.cpp
@@ -23,13 +23,14 @@ ZmqContext::ZmqContext() : _inproc(nullptr)
ZmqContext::~ZmqContext()
{
- delete _inproc;
}
zmqpp::socket* ZmqContext::CreateNewSocket(zmqpp::socket_type type)
{
std::unique_lock<std::mutex> lock(_mutex);
- return new zmqpp::socket(_context, type);
+ zmqpp::socket* socket = new zmqpp::socket(_context, type);
+ socket->set(zmqpp::socket_option::linger, 0);
+ return socket;
}
void ZmqContext::Initialize()
@@ -49,4 +50,6 @@ zmqpp::socket* ZmqContext::CreateInprocSubscriber()
void ZmqContext::Close()
{
_inproc->send("internalmq.kill");
+ delete _inproc;
+ _inproc = nullptr;
}