Browse Source

relay: do forward data if the http request type was HEAD

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Felix Fietkau 10 years ago
parent
commit
d6366570bf
3 changed files with 8 additions and 1 deletions
  1. 3 0
      proc.c
  2. 3 1
      relay.c
  3. 2 0
      uhttpd.h

+ 3 - 0
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)

+ 3 - 1
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);
 }
 

+ 2 - 0
uhttpd.h

@@ -152,6 +152,8 @@ struct relay {
 
 	bool process_done;
 	bool error;
+	bool skip_data;
+
 	int ret;
 	int header_ofs;