]> granicus.if.org Git - libevent/commitdiff
http: assert's that evbuffer_drain() success on connection reset
authorAzat Khuzhin <a3at.mail@gmail.com>
Fri, 11 Mar 2016 11:02:13 +0000 (14:02 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Fri, 11 Mar 2016 15:53:10 +0000 (18:53 +0300)
Since otherwise we can have nasty bugs with part of previous *request* in
current *request* and hence some parsing errors.

And now we have failures:
  http/non_lingering_close: [forking] [err] ../http.c:1326: Assertion !evbuffer_drain(tmp, -1) failed in ../http.c

http.c

diff --git a/http.c b/http.c
index 26032b0f4fd3e9b321bc686a8b8082c1ce27c613..f7241020d58ec1d6b0b20e19993c8215df47a75f 100644 (file)
--- a/http.c
+++ b/http.c
@@ -1323,9 +1323,9 @@ evhttp_connection_reset_(struct evhttp_connection *evcon)
 
        /* we need to clean up any buffered data */
        tmp = bufferevent_get_output(evcon->bufev);
-       evbuffer_drain(tmp, evbuffer_get_length(tmp));
+       EVUTIL_ASSERT(!evbuffer_drain(tmp, -1));
        tmp = bufferevent_get_input(evcon->bufev);
-       evbuffer_drain(tmp, evbuffer_get_length(tmp));
+       EVUTIL_ASSERT(!evbuffer_drain(tmp, -1));
 
        evcon->state = EVCON_DISCONNECTED;
 }