diff --git a/src/net/tcp_client.cpp b/src/net/tcp_client.cpp index ad5d886195e5911d4575e81989033e7da66321d0..e62cffd6360c4870c708fe099fbae17d6463d17c 100644 --- a/src/net/tcp_client.cpp +++ b/src/net/tcp_client.cpp @@ -195,11 +195,12 @@ void tcp_client::push_write_queue(::ev::io &w) { iorecord buffer = this->write_queue.pop_front(); ssize_t written = write(w.fd, buffer.ptr(), buffer.size()); - if (written < 0) { + if (written >= 0) { + buffer.advance((size_t)written); + } else if (errno != EAGAIN) { throw netio_exception("Failed to write latest buffer content."); } - buffer.advance((size_t)written); this->write_queue.push_front(buffer); }