diff --git a/common/events_common.h b/common/events_common.h index 92770d7c5..68b05526b 100644 --- a/common/events_common.h +++ b/common/events_common.h @@ -258,9 +258,6 @@ struct serialization int deserialize(const string& s, Map& data) { - if (s.size() < 2) { // zmq identifying message of length 1 - return 0; - } try { istringstream ss(s); boost::archive::text_iarchive iarch(ss); @@ -312,7 +309,8 @@ struct serialization more = 0; zmq_msg_init(&msg); int rc = zmq_msg_recv(&msg, sock, flag); - if (rc != -1) { + size_t msg_size = zmq_msg_size(&msg); + if (rc != -1 && msg_size > 1) { size_t more_size = sizeof (more); zmq_getsockopt (sock, ZMQ_RCVMORE, &more, &more_size); diff --git a/tests/events_common_ut.cpp b/tests/events_common_ut.cpp index 485a9fcda..6781ce6b3 100644 --- a/tests/events_common_ut.cpp +++ b/tests/events_common_ut.cpp @@ -81,10 +81,10 @@ TEST(events_common, send_recv) void *sock_p1 = zmq_socket (zmq_ctx, ZMQ_PAIR); EXPECT_EQ(0, zmq_bind (sock_p1, path)); - string source("Hello"), source1, source2("#"); + string source("Hello"), source1, source2, source3; map m = {{"foo", "bar"}, {"hello", "world"}, {"good", "day"}}; - map m1, m2; + map m1, m2, m3; EXPECT_EQ(0, zmq_message_send(sock_p0, source, m)); @@ -92,8 +92,13 @@ TEST(events_common, send_recv) EXPECT_EQ(source, source1); EXPECT_EQ(m, m1); + + + EXPECT_EQ(0, zmq_message_send(sock_p0, source2, m2)); + EXPECT_EQ(0, zmq_message_read(sock_p1, 0, source3, m3)); - EXPECT_EQ(0, deserialize(source2, m2)); + EXPECT_EQ(source2, source3); + EXPECT_EQ(m2, m3); zmq_close(sock_p0); zmq_close(sock_p1);