diff --git a/src/box/iproto.cc b/src/box/iproto.cc index 8e9b69490eee92778ad19a8bb77178c7b09efc7f..0cdb34e22f541bc2b14b96c9bebdca7e5027e1a3 100644 --- a/src/box/iproto.cc +++ b/src/box/iproto.cc @@ -577,10 +577,12 @@ iproto_flush(struct iobuf *iobuf, struct iproto_connection *con) } return 0; } - size_t iov_len = 0; + size_t offset = 0; + int advance = 0; + advance = sio_move_iov(iov, nwr, &offset); begin->used += nwr; /* advance write position */ - begin->pos += sio_move_iov(iov, nwr, &iov_len); - begin->iov_len = iov_len; + begin->iov_len = advance == 0 ? begin->iov_len + offset: offset; + begin->pos += advance; assert(begin->pos <= end->pos); } return -1;