diff options
author | Reyk Floeter <reyk@esdenera.com> | 2014-07-14 20:07:18 +0200 |
---|---|---|
committer | Reyk Floeter <reyk@esdenera.com> | 2014-07-14 20:07:18 +0200 |
commit | 9b7e15e3badd2165021ca8d072da56cc0d993d70 (patch) | |
tree | 2d967d2a259763266f19ccb161b1989560eb787d | |
parent | 788c33498ec649d73a73a8f65f73878a34e5d313 (diff) | |
download | httpd-9b7e15e3badd2165021ca8d072da56cc0d993d70.tar.gz httpd-9b7e15e3badd2165021ca8d072da56cc0d993d70.zip |
fix HEAD crash
-rw-r--r-- | server_http.c | 11 |
1 files 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; |