aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReyk Floeter <reyk@esdenera.com>2014-07-14 20:07:18 +0200
committerReyk Floeter <reyk@esdenera.com>2014-07-14 20:07:18 +0200
commit9b7e15e3badd2165021ca8d072da56cc0d993d70 (patch)
tree2d967d2a259763266f19ccb161b1989560eb787d
parent788c33498ec649d73a73a8f65f73878a34e5d313 (diff)
downloadhttpd-9b7e15e3badd2165021ca8d072da56cc0d993d70.tar.gz
httpd-9b7e15e3badd2165021ca8d072da56cc0d993d70.zip
fix HEAD crash
-rw-r--r--server_http.c11
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;