From 4f8d550c72658177b47111d2f64dfe94900b6df4 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 2 Jan 2013 19:07:17 +0100 Subject: add support for sending HTTP/1.1 100 Continue --- client.c | 8 ++++++++ uhttpd.h | 1 + 2 files changed, 9 insertions(+) diff --git a/client.c b/client.c index 3dc40e8..c5b82d2 100644 --- a/client.c +++ b/client.c @@ -141,6 +141,7 @@ static int client_parse_request(struct client *cl, char *data) if (!type || !path || !version) return CLIENT_STATE_DONE; + memset(&cl->request, 0, sizeof(cl->request)); req->url = path; req->method = find_idx(http_methods, ARRAY_SIZE(http_methods), type); if (req->method < 0) @@ -191,6 +192,9 @@ static void client_header_complete(struct client *cl) if (!rfc1918_filter_check(cl)) return; + if (cl->request.expect_cont) + ustream_printf(cl->us, "HTTP/1.1 100 Continue\r\n\r\n"); + uh_handle_request(cl); } @@ -216,6 +220,10 @@ static void client_parse_header(struct client *cl, char *data) if (isupper(*name)) *name = tolower(*name); + if (!strcasecmp(data, "Expect") && + !strcasecmp(val, "100-continue")) + cl->request.expect_cont = true; + blobmsg_add_string(&cl->hdr, data, val); cl->state = CLIENT_STATE_HEADER; diff --git a/uhttpd.h b/uhttpd.h index f47c743..4c09c12 100644 --- a/uhttpd.h +++ b/uhttpd.h @@ -78,6 +78,7 @@ enum http_version { struct http_request { enum http_method method; enum http_version version; + bool expect_cont; int redirect_status; const char *url; const struct auth_realm *realm; -- cgit v1.2.3