Skip to content

Commit 54799c8

Browse files
Charles Stanleyvagrant
authored andcommitted
fixes zeromq#1565: Allow session to flush commands on an engine error
1 parent e56b486 commit 54799c8

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

src/session_base.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,9 @@ void zmq::session_base_t::engine_error (
428428

429429
if (zap_pipe)
430430
zap_pipe->check_read ();
431+
432+
zmq_assert(socket);
433+
socket->flush_commands();
431434
}
432435

433436
void zmq::session_base_t::process_term (int linger_)

src/socket_base.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1417,6 +1417,13 @@ void zmq::socket_base_t::check_destroy ()
14171417
}
14181418
}
14191419

1420+
void zmq::socket_base_t::flush_commands ()
1421+
{
1422+
ENTER_MUTEX();
1423+
process_commands (0, false);
1424+
EXIT_MUTEX();
1425+
}
1426+
14201427
void zmq::socket_base_t::read_activated (pipe_t *pipe_)
14211428
{
14221429
xread_activated (pipe_);

src/socket_base.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ namespace zmq
109109
void out_event ();
110110
void timer_event (int id_);
111111

112+
void flush_commands();
113+
112114
// i_pipe_events interface implementation.
113115
void read_activated (pipe_t *pipe_);
114116
void write_activated (pipe_t *pipe_);

0 commit comments

Comments
 (0)