summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-03-21 21:27:30 +0100
committerFelix Fietkau <nbd@openwrt.org>2014-03-21 21:27:33 +0100
commitd6366570bf706f3970b7f106a1ccd49b584559cf (patch)
treee61c29f574a21d8c65ccbd2a03fe6545625acc33
parent4ead51e17f1e7d7c986daf0cb3f1aeb12d3fe98e (diff)
downloaduhttpd2-d6366570bf706f3970b7f106a1ccd49b584559cf.tar.gz
relay: do forward data if the http request type was HEAD
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-rw-r--r--proc.c3
-rw-r--r--relay.c4
-rw-r--r--uhttpd.h2
3 files changed, 8 insertions, 1 deletions
diff --git a/proc.c b/proc.c
index 5be6232..9c4b685 100644
--- a/proc.c
+++ b/proc.c
@@ -224,6 +224,9 @@ static void proc_handle_header_end(struct relay *r)
ustream_printf(cl->us, "%s: %s\r\n", blobmsg_name(cur), blobmsg_data(cur));
ustream_printf(cl->us, "\r\n");
+
+ if (cl->request.method == UH_HTTP_MSG_HEAD)
+ r->skip_data = true;
}
static void proc_write_close(struct client *cl)
diff --git a/relay.c b/relay.c
index 6195349..7331a0a 100644
--- a/relay.c
+++ b/relay.c
@@ -142,7 +142,9 @@ static void relay_read_cb(struct ustream *s, int bytes)
if (!buf || !len)
return;
- uh_chunk_write(cl, buf, len);
+ if (!r->skip_data)
+ uh_chunk_write(cl, buf, len);
+
ustream_consume(s, len);
}
diff --git a/uhttpd.h b/uhttpd.h
index a620030..cace950 100644
--- a/uhttpd.h
+++ b/uhttpd.h
@@ -152,6 +152,8 @@ struct relay {
bool process_done;
bool error;
+ bool skip_data;
+
int ret;
int header_ofs;