From 75a088ebf1c1e5bb71111395d138d04b04624484 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 16 Sep 2011 02:21:09 +0200 Subject: [PATCH] unix: remove failed write requests from stream->write_queue_size --- src/unix/stream.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/unix/stream.c b/src/unix/stream.c index a4bcde3b..12c7173c 100644 --- a/src/unix/stream.c +++ b/src/unix/stream.c @@ -287,6 +287,17 @@ static void uv__drain(uv_stream_t* stream) { } +static size_t uv__write_req_size(uv_write_t* req) { + size_t size; + + size = uv__buf_count(req->bufs + req->write_index, + req->bufcnt - req->write_index); + assert(req->handle->write_queue_size >= size); + + return size; +} + + static void uv__write_req_finish(uv_write_t* req) { uv_stream_t* stream = req->handle; @@ -351,6 +362,7 @@ static void uv__write(uv_stream_t* stream) { if (errno != EAGAIN) { /* Error */ req->error = errno; + stream->write_queue_size -= uv__write_req_size(req); uv__write_req_finish(req); return; }