diff --git a/src/box/iproto.cc b/src/box/iproto.cc
index 8a73c2e7eb027724c7f86a91cdf68afb7aff7c8c..75042a8f8cbfac3def0e61eed4b94d802ad917f7 100644
--- a/src/box/iproto.cc
+++ b/src/box/iproto.cc
@@ -525,7 +525,8 @@ iproto_connection_on_input(ev_loop *loop, struct ev_io *watcher,
 static inline struct iobuf *
 iproto_connection_output_iobuf(struct iproto_connection *con)
 {
-	if (obuf_used(&con->iobuf[1]->out))
+	if (obuf_used(&con->iobuf[1]->out) &&
+	    obuf_used(&con->iobuf[1]->out) > con->write_pos.used)
 		return con->iobuf[1];
 	/*
 	 * Don't try to write from a newer buffer if an older one
@@ -534,7 +535,8 @@ iproto_connection_output_iobuf(struct iproto_connection *con)
 	 * pieces of replies from both buffers.
 	 */
 	if (ibuf_used(&con->iobuf[1]->in) == 0 &&
-	    obuf_used(&con->iobuf[0]->out))
+	    obuf_used(&con->iobuf[0]->out) &&
+	    obuf_used(&con->iobuf[0]->out) > con->write_pos.used)
 		return con->iobuf[0];
 	return NULL;
 }