From ed64585e93233a89a16dd27b96aa3c35180335b9 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 6 Oct 2017 11:12:13 +0100 Subject: [PATCH] Problem: test_rebind_ipc might not see race condition on fast envs Solution: pre-create the second socket to save a few cycles between closing the old one and binding the new one --- tests/test_rebind_ipc.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/tests/test_rebind_ipc.cpp b/tests/test_rebind_ipc.cpp index 5cc4fd75..5132ccb2 100644 --- a/tests/test_rebind_ipc.cpp +++ b/tests/test_rebind_ipc.cpp @@ -39,9 +39,12 @@ int main (void) void *ctx = zmq_ctx_new (); assert (ctx); - void *sb = zmq_socket (ctx, ZMQ_PUSH); - assert (sb); - int rc = zmq_bind (sb, SOCKET_ADDR); + void *sb0 = zmq_socket (ctx, ZMQ_PUSH); + assert (sb0); + void *sb1 = zmq_socket (ctx, ZMQ_PUSH); + assert (sb1); + + int rc = zmq_bind (sb0, SOCKET_ADDR); assert (rc == 0); void *sc = zmq_socket (ctx, ZMQ_PULL); @@ -49,22 +52,20 @@ int main (void) rc = zmq_connect (sc, SOCKET_ADDR); assert (rc == 0); - rc = zmq_send (sb, "42", 2, 0); + rc = zmq_send (sb0, "42", 2, 0); assert (rc == 2); char buffer [2]; rc = zmq_recv(sc, buffer, 2, 0); assert (rc == 2); - rc = zmq_close (sb); + rc = zmq_close (sb0); assert (rc == 0); - sb = zmq_socket (ctx, ZMQ_PUSH); - assert (sb); - rc = zmq_bind (sb, SOCKET_ADDR); + rc = zmq_bind (sb1, SOCKET_ADDR); assert (rc == 0); - rc = zmq_send (sb, "42", 2, 0); + rc = zmq_send (sb1, "42", 2, 0); assert (rc == 2); rc = zmq_recv(sc, buffer, 2, 0); @@ -73,7 +74,7 @@ int main (void) rc = zmq_close (sc); assert (rc == 0); - rc = zmq_close (sb); + rc = zmq_close (sb1); assert (rc == 0); rc = zmq_ctx_term (ctx);