From 9b7e15e3badd2165021ca8d072da56cc0d993d70 Mon Sep 17 00:00:00 2001 From: Reyk Floeter Date: Mon, 14 Jul 2014 20:07:18 +0200 Subject: fix HEAD crash --- server_http.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/server_http.c b/server_http.c index 061e8a4..329080a 100644 --- a/server_http.c +++ b/server_http.c @@ -321,6 +321,7 @@ server_read_http(struct bufferevent *bev, void *arg) if (clt->clt_toread <= 0) { if (server_response(env, clt) == -1) return; + server_reset_http(clt, 0); } } if (clt->clt_done) { @@ -501,23 +502,23 @@ server_read_httpchunks(struct bufferevent *bev, void *arg) } void -server_reset_http(struct client *clt, int all) +server_reset_http(struct client *clt, int done) { struct http_descriptor *desc = clt->clt_desc; + server_httpdesc_free(desc); desc->http_method = 0; desc->http_chunked = 0; desc->http_lastheader = NULL; clt->clt_headerlen = 0; clt->clt_line = 0; clt->clt_done = 0; - clt->clt_toread = TOREAD_HTTP_HEADER; - clt->clt_bev->readcb = server_read_http; - if (!all) + if (!done) return; - server_httpdesc_free(desc); + clt->clt_toread = TOREAD_HTTP_HEADER; + clt->clt_bev->readcb = server_read_http; if (clt->clt_fd != -1) { close(clt->clt_fd); clt->clt_fd = -1; -- cgit v1.2.3-54-g00ecf