]> granicus.if.org Git - libevent/commitdiff
http: do not do function calls under EVUTIL_ASSERT() to fix NDEBUG builds
authorAzat Khuzhin <a3at.mail@gmail.com>
Fri, 11 Mar 2016 16:52:32 +0000 (19:52 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Fri, 11 Mar 2016 17:59:58 +0000 (20:59 +0300)
Fixes: 2185e639210f072f37e9d19aff7dba382db84529 ("http: assert's that
evbuffer_drain() success on connection reset")
Fixes: http/data_length_constraints
  FAIL ../test/regress_http.c:3775: assert(evhttp_request_get_response_code(req) == HTTP_ENTITYTOOLARGE): 501 vs 413

http.c

diff --git a/http.c b/http.c
index 2c69dbc4452c82fc65f129a58a1ae8d5873f0a3a..4849ff116dd56517cb8d97fe9dfb4207914fefad 100644 (file)
--- a/http.c
+++ b/http.c
@@ -1314,6 +1314,7 @@ void
 evhttp_connection_reset_(struct evhttp_connection *evcon)
 {
        struct evbuffer *tmp;
+       int err;
 
        /* XXXX This is not actually an optimal fix.  Instead we ought to have
           an API for "stop connecting", or use bufferevent_setfd to turn off
@@ -1341,9 +1342,11 @@ evhttp_connection_reset_(struct evhttp_connection *evcon)
 
        /* we need to clean up any buffered data */
        tmp = bufferevent_get_output(evcon->bufev);
-       EVUTIL_ASSERT(!evbuffer_drain(tmp, -1));
+       err = evbuffer_drain(tmp, -1);
+       EVUTIL_ASSERT(!err && "drain output");
        tmp = bufferevent_get_input(evcon->bufev);
-       EVUTIL_ASSERT(!evbuffer_drain(tmp, -1));
+       err = evbuffer_drain(tmp, -1);
+       EVUTIL_ASSERT(!err && "drain input");
 
        evcon->state = EVCON_DISCONNECTED;
 }