aboutsummaryrefslogtreecommitdiff
path: root/server_http.c
diff options
context:
space:
mode:
Diffstat (limited to 'server_http.c')
-rw-r--r--server_http.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/server_http.c b/server_http.c
index ad2add8..061e8a4 100644
--- a/server_http.c
+++ b/server_http.c
@@ -321,7 +321,6 @@ server_read_http(struct bufferevent *bev, void *arg)
if (clt->clt_toread <= 0) {
if (server_response(env, clt) == -1)
return;
- clt->clt_done = 0;
}
}
if (clt->clt_done) {
@@ -502,18 +501,23 @@ server_read_httpchunks(struct bufferevent *bev, void *arg)
}
void
-server_reset_http(struct client *clt)
+server_reset_http(struct client *clt, int all)
{
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)
+ return;
+
+ server_httpdesc_free(desc);
if (clt->clt_fd != -1) {
close(clt->clt_fd);
clt->clt_fd = -1;