diff options
-rw-r--r-- | src/server/ipc/ZMQTask.cpp | 1 | ||||
-rw-r--r-- | src/server/ipc/ZmqContext.cpp | 7 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/server/ipc/ZMQTask.cpp b/src/server/ipc/ZMQTask.cpp index e82449880c2..6d359d9b10a 100644 --- a/src/server/ipc/ZMQTask.cpp +++ b/src/server/ipc/ZMQTask.cpp @@ -44,6 +44,7 @@ void ZMQTask::Start() void ZMQTask::End() { _thread->join(); + _poller->remove(*_inproc); _inproc->close(); HandleClose(); } 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; } |