summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-zeromq/lib/base_impl.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/gr-zeromq/lib/base_impl.cc b/gr-zeromq/lib/base_impl.cc
index 5889490898..6b573211dd 100644
--- a/gr-zeromq/lib/base_impl.cc
+++ b/gr-zeromq/lib/base_impl.cc
@@ -16,6 +16,10 @@
#include "tag_headers.h"
#include <gnuradio/io_signature.h>
+namespace {
+constexpr int LINGER_DEFAULT = 1000; // 1 second.
+}
+
namespace gr {
namespace zeromq {
@@ -72,6 +76,9 @@ base_sink_impl::base_sink_impl(int type,
#endif
}
+ /* Set ZMQ_LINGER so socket won't infinitely block during teardown */
+ d_socket.setsockopt(ZMQ_LINGER, &LINGER_DEFAULT, sizeof(LINGER_DEFAULT));
+
/* Bind */
d_socket.bind(address);
}
@@ -143,6 +150,9 @@ base_source_impl::base_source_impl(int type,
#endif
}
+ /* Set ZMQ_LINGER so socket won't infinitely block during teardown */
+ d_socket.setsockopt(ZMQ_LINGER, &LINGER_DEFAULT, sizeof(LINGER_DEFAULT));
+
/* Connect */
d_socket.connect(address);
}