summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client.c6
-rw-r--r--file.c2
-rw-r--r--uhttpd.h2
-rw-r--r--utils.c8
4 files changed, 8 insertions, 10 deletions
diff --git a/client.c b/client.c
index dbdd1a3..73e0e49 100644
--- a/client.c
+++ b/client.c
@@ -50,7 +50,7 @@ void uh_http_header(struct client *cl, int code, const char *summary)
cl->http_code = code;
- if (!cl->request.respond_chunked)
+ if (!uh_use_chunked(cl))
enc = "";
if (r->connection_close)
@@ -188,8 +188,6 @@ 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;
}
@@ -261,7 +259,7 @@ static bool tls_redirect_check(struct client *cl)
else if ((ptr = strchr(host, ':')) != NULL)
*ptr = 0;
- cl->request.respond_chunked = false;
+ cl->request.disable_chunked = true;
cl->request.connection_close = true;
uh_http_header(cl, 307, "Temporary Redirect");
diff --git a/file.c b/file.c
index 9a2880f..9946d7c 100644
--- a/file.c
+++ b/file.c
@@ -614,7 +614,7 @@ static void uh_file_request(struct client *cl, const char *url,
if (fd < 0)
goto error;
- req->respond_chunked = false;
+ req->disable_chunked = true;
cl->dispatch.file.hdr = tb;
uh_file_data(cl, pi, fd);
cl->dispatch.file.hdr = NULL;
diff --git a/uhttpd.h b/uhttpd.h
index fbcb1ed..be9ee7f 100644
--- a/uhttpd.h
+++ b/uhttpd.h
@@ -112,7 +112,7 @@ struct http_request {
int content_length;
bool expect_cont;
bool connection_close;
- bool respond_chunked;
+ bool disable_chunked;
uint8_t transfer_chunked;
const struct auth_realm *realm;
};
diff --git a/utils.c b/utils.c
index 857e326..29e03c0 100644
--- a/utils.c
+++ b/utils.c
@@ -32,12 +32,12 @@ bool uh_use_chunked(struct client *cl)
if (cl->http_code == 204 || cl->http_code == 304)
return false;
- return true;
+ return !cl->request.disable_chunked;
}
void uh_chunk_write(struct client *cl, const void *data, int len)
{
- bool chunked = cl->request.respond_chunked;
+ bool chunked = uh_use_chunked(cl);
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 (!cl->request.respond_chunked) {
+ if (!uh_use_chunked(cl)) {
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 (!cl->request.respond_chunked)
+ if (!uh_use_chunked(cl))
return;
if (cl->state == CLIENT_STATE_CLEANUP)