Commit 2973eaf4 authored by Martin Hurton's avatar Martin Hurton

Prevent connection starvation

When removing a pipe from the lb or fq component,
make sure we do not remove another pipe from the active set.
parent 4e7be102
......@@ -46,10 +46,13 @@ void zmq::fq_t::attach (pipe_t *pipe_)
void zmq::fq_t::terminated (pipe_t *pipe_)
{
const pipes_t::size_type index = pipes.index (pipe_);
// Remove the pipe from the list; adjust number of active pipes
// accordingly.
if (pipes.index (pipe_) < active) {
if (index < active) {
active--;
pipes.swap (index, active);
if (current == active)
current = 0;
}
......
......@@ -58,6 +58,7 @@ void zmq::lb_t::terminated (pipe_t *pipe_)
// accordingly.
if (index < active) {
active--;
pipes.swap (index, active);
if (current == active)
current = 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment