diff --git a/mongoose.c b/mongoose.c index f2b628f13c52ff2e8eaf00e51c284f603f0abcca..bdb9d5e784e6d7fe429d0adc94bd289fdb8f1440 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4030,15 +4030,16 @@ static void http_handler(struct mg_connection *nc, int ev, void *ev_data) { #ifndef MG_DISABLE_HTTP_WEBSOCKET struct mg_str *vec; #endif - /* - * For HTTP messages without Content-Length, always send HTTP message - * before MG_EV_CLOSE message. - */ - if (ev == MG_EV_CLOSE && io->len > 0 && - mg_parse_http(io->buf, io->len, &hm, is_req) > 0) { - hm.message.len = io->len; - hm.body.len = io->buf + io->len - hm.body.p; - nc->handler(nc, is_req ? MG_EV_HTTP_REQUEST : MG_EV_HTTP_REPLY, &hm); + if (ev == MG_EV_CLOSE) { + /* + * For HTTP messages without Content-Length, always send HTTP message + * before MG_EV_CLOSE message. + */ + if (io->len > 0 && mg_parse_http(io->buf, io->len, &hm, is_req) > 0) { + hm.message.len = io->len; + hm.body.len = io->buf + io->len - hm.body.p; + nc->handler(nc, is_req ? MG_EV_HTTP_REQUEST : MG_EV_HTTP_REPLY, &hm); + } free_http_proto_data(nc); }