When connecting to a website with a special port, uclient-fetch connects to the 
correct
port, but is sending an incorrect Host: header without the corresponding port.

Signed-off-by: Alexander Couzens <lyn...@fe80.eu>
---
 uclient-http.c | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/uclient-http.c b/uclient-http.c
index 899f367..da58cda 100644
--- a/uclient-http.c
+++ b/uclient-http.c
@@ -560,6 +560,7 @@ uclient_http_send_headers(struct uclient_http *uh)
        struct blob_attr *cur;
        enum request_type req_type = uh->req_type;
        int rem;
+       char *default_port = "";
 
        if (uh->state >= HTTP_STATE_HEADERS_SENT)
                return;
@@ -567,11 +568,25 @@ uclient_http_send_headers(struct uclient_http *uh)
        if (uh->uc.proxy_url)
                url = uh->uc.proxy_url;
 
-       ustream_printf(uh->us,
-               "%s %s HTTP/1.1\r\n"
-               "Host: %s\r\n",
-               request_types[req_type],
-               url->location, url->host);
+       if (uh->uc.url->prefix == PREFIX_HTTP)
+               default_port = "80";
+       else if (uh->uc.url->prefix == PREFIX_HTTPS)
+               default_port = "443";
+
+       /* append only the port if given and different from default port */
+       if (uh->uc.url->port && strcmp(default_port, uh->uc.url->port)) {
+               ustream_printf(uh->us,
+                              "%s %s HTTP/1.1\r\n"
+                              "Host: %s:%s\r\n",
+                              request_types[req_type],
+                              url->location, url->host, url->port);
+       } else {
+               ustream_printf(uh->us,
+                              "%s %s HTTP/1.1\r\n"
+                              "Host: %s\r\n",
+                              request_types[req_type],
+                              url->location, url->host);
+       }
 
        blobmsg_for_each_attr(cur, uh->headers.head, rem)
                ustream_printf(uh->us, "%s: %s\r\n", blobmsg_name(cur), (char 
*) blobmsg_data(cur));
-- 
2.10.2


_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to