From 628c1c21ffb19d8c96ed9ce89531595f9870ab1a Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期五, 23 四月 2021 18:41:02 +0800 Subject: [PATCH] add msg tag; recv all msgs before remove mq. --- src/failed_msg.cpp | 13 ++++--------- 1 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/failed_msg.cpp b/src/failed_msg.cpp index 0b4c443..d8a3182 100644 --- a/src/failed_msg.cpp +++ b/src/failed_msg.cpp @@ -17,18 +17,13 @@ */ #include "failed_msg.h" -FailedMsgQ::Func FailedMsgQ::PrepareSender(const std::string &remote, Msg const &msg) +FailedMsgQ::Func FailedMsgQ::PrepareSender(const std::string &remote, Msg msg) { msg.AddRef(); - return [remote, msg](void *valid_sock) { + return [remote, msg](void *valid_sock) mutable { assert(valid_sock); ShmSocket &sock = *static_cast<ShmSocket *>(valid_sock); - bool r = sock.Send(remote.data(), msg, 0); - //TODO check remote removed. - if (r && msg.IsCounted()) { - auto tmp = msg; // Release() is not const, but it's safe to release. - tmp.Release(sock.shm()); - } - return r; + DEFER1(msg.Release()); // Release() is not const, but it's safe to release. + return sock.Send(remote.data(), msg); }; } \ No newline at end of file -- Gitblit v1.8.0