diff --git a/logsrvd/logsrvd.c b/logsrvd/logsrvd.c index db3db786ad..663baa129b 100644 --- a/logsrvd/logsrvd.c +++ b/logsrvd/logsrvd.c @@ -1259,6 +1259,10 @@ client_msg_cb(int fd, int what, void *v) goto send_error; } buf->off += msg_len; + + /* Don't process any more messages once an error is pending. */ + if (closure->error) + break; } if (buf->len != buf->off) { memmove(buf->data, buf->data + buf->off, buf->len - buf->off); diff --git a/logsrvd/logsrvd_relay.c b/logsrvd/logsrvd_relay.c index 79fa11e2f0..f2555873e3 100644 --- a/logsrvd/logsrvd_relay.c +++ b/logsrvd/logsrvd_relay.c @@ -920,6 +920,10 @@ relay_server_msg_cb(int fd, int what, void *v) if (!handle_server_message(buf->data + buf->off, msg_len, closure)) goto send_error; buf->off += msg_len; + + /* Don't process any more messages once an error is pending. */ + if (closure->error) + break; } if (buf->len != buf->off) { memmove(buf->data, buf->data + buf->off, buf->len - buf->off);