52 lines
1.4 KiB
Diff
52 lines
1.4 KiB
Diff
From 07ec982b078f8672c8cdbb42bf2e861c969ab40b Mon Sep 17 00:00:00 2001
|
|
From: Duncaen <mail@duncano.de>
|
|
Date: Mon, 8 Apr 2019 13:16:53 +0200
|
|
Subject: [PATCH] lib/fetch/http.c: ignore headers after CONNECT response
|
|
|
|
---
|
|
lib/fetch/http.c | 19 ++++++++++++++++++-
|
|
1 file changed, 18 insertions(+), 1 deletion(-)
|
|
|
|
diff --git lib/fetch/http.c lib/fetch/http.c
|
|
index dcc7bf7d..cb27905e 100644
|
|
--- lib/fetch/http.c
|
|
+++ lib/fetch/http.c
|
|
@@ -721,6 +721,8 @@ http_connect(struct url *URL, struct url *purl, const char *flags, int *cached)
|
|
{
|
|
struct url *curl;
|
|
conn_t *conn;
|
|
+ const char *p;
|
|
+ hdr_t h;
|
|
int af, verbose;
|
|
#ifdef TCP_NOPUSH
|
|
int val;
|
|
@@ -759,10 +761,25 @@ http_connect(struct url *URL, struct url *purl, const char *flags, int *cached)
|
|
http_cmd(conn, "\r\n");
|
|
|
|
if (http_get_reply(conn) != HTTP_OK) {
|
|
+ http_seterr(conn->err);
|
|
fetch_close(conn);
|
|
return (NULL);
|
|
}
|
|
- http_get_reply(conn);
|
|
+ /* Read and discard the rest of the proxy response */
|
|
+ do {
|
|
+ switch ((h = http_next_header(conn, &p))) {
|
|
+ case hdr_syserror:
|
|
+ fetch_syserr();
|
|
+ fetch_close(conn);
|
|
+ return (NULL);
|
|
+ case hdr_error:
|
|
+ http_seterr(HTTP_PROTOCOL_ERROR);
|
|
+ fetch_close(conn);
|
|
+ return (NULL);
|
|
+ default:
|
|
+ /* ignore */ ;
|
|
+ }
|
|
+ } while (h > hdr_end);
|
|
}
|
|
if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0 &&
|
|
fetch_ssl(conn, URL, verbose) == -1) {
|
|
--
|
|
2.21.0
|
|
|