diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2015-05-30 15:48:42 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2015-05-30 15:51:02 +0200 |
commit | 5162e3b0ee7bd1d0fd6e75e1ca7993a1834b5291 (patch) | |
tree | 4ba7bb8d6e09af284cb72a0a7d8a0df4cee8da34 | |
parent | b9178b9357798ae23a5724333cc6572d14f23958 (diff) |
allow request handlers to disable chunked reponses
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
-rw-r--r-- | client.c | 4 | ||||
-rw-r--r-- | uhttpd.h | 1 | ||||
-rw-r--r-- | utils.c | 6 |
3 files changed, 7 insertions, 4 deletions
@@ -50,7 +50,7 @@ void uh_http_header(struct client *cl, int code, const char *summary) cl->http_code = code; - if (!uh_use_chunked(cl)) + if (!cl->request.respond_chunked) enc = ""; if (r->connection_close) @@ -188,6 +188,8 @@ static int client_parse_request(struct client *cl, char *data) !conf.http_keepalive) req->connection_close = true; + req->respond_chunked = uh_use_chunked(cl); + return CLIENT_STATE_HEADER; } @@ -111,6 +111,7 @@ struct http_request { int content_length; bool expect_cont; bool connection_close; + bool respond_chunked; uint8_t transfer_chunked; const struct auth_realm *realm; }; @@ -37,7 +37,7 @@ bool uh_use_chunked(struct client *cl) void uh_chunk_write(struct client *cl, const void *data, int len) { - bool chunked = uh_use_chunked(cl); + bool chunked = cl->request.respond_chunked; if (cl->state == CLIENT_STATE_CLEANUP) return; @@ -60,7 +60,7 @@ void uh_chunk_vprintf(struct client *cl, const char *format, va_list arg) return; uloop_timeout_set(&cl->timeout, conf.network_timeout * 1000); - if (!uh_use_chunked(cl)) { + if (!cl->request.respond_chunked) { ustream_vprintf(cl->us, format, arg); return; } @@ -88,7 +88,7 @@ void uh_chunk_printf(struct client *cl, const char *format, ...) void uh_chunk_eof(struct client *cl) { - if (!uh_use_chunked(cl)) + if (!cl->request.respond_chunked) return; if (cl->state == CLIENT_STATE_CLEANUP) |