diff --git a/src/iproto.cc b/src/iproto.cc index 81eec8464139c6c650935b7b619c4cda23627763..5488b5cb969dda4bd8779fa5331167df58fa30c1 100644 --- a/src/iproto.cc +++ b/src/iproto.cc @@ -548,7 +548,8 @@ iproto_session_on_input(struct ev_io *watcher, static inline struct iobuf * iproto_session_output_iobuf(struct iproto_session *session) { - if (obuf_size(&session->iobuf[1]->out)) + if (obuf_size(&session->iobuf[1]->out) && + obuf_size(&session->iobuf[1]->out) > con->write_pos.size) return session->iobuf[1]; /* * Don't try to write from a newer buffer if an older one @@ -557,7 +558,8 @@ iproto_session_output_iobuf(struct iproto_session *session) * pieces of replies from both buffers. */ if (ibuf_size(&session->iobuf[1]->in) == 0 && - obuf_size(&session->iobuf[0]->out)) + obuf_size(&session->iobuf[0]->out) + obuf_size(&session->iobuf[0]->out) > con->write_pos.size) return session->iobuf[0]; return NULL; }