aboutsummaryrefslogtreecommitdiff
path: root/server_http.c
diff options
context:
space:
mode:
Diffstat (limited to 'server_http.c')
-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;