]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: http-url - Make sure url->have_ssl is properly initialized in http_url_requ...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Thu, 10 Nov 2022 01:50:02 +0000 (02:50 +0100)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 10 Nov 2022 07:58:22 +0000 (07:58 +0000)
This fixes the problem that the HTTP server does not yield proper HTTPS urls for
incoming requests.

src/lib-http/http-url.c
src/lib-http/test-http-payload.c

index 617fa0932bdf9a8c6b60b7577b32872ec3b1aa4d..2bdc2cfaf57d2fa885964fc4ece7898353f09dcd 100644 (file)
@@ -450,7 +450,10 @@ int http_url_request_target_parse(const char *request_target,
        struct uri_authority auth;
        struct http_url base;
 
-       i_zero(&base);
+       if (default_base == NULL)
+               i_zero(&base);
+       else
+               http_url_init_authority_from(&base, default_base);
        if (host_header != NULL && *host_header != '\0') {
                struct uri_parser *parser;
 
@@ -484,7 +487,6 @@ int http_url_request_target_parse(const char *request_target,
                return -1;
        } else {
                i_assert(default_base != NULL);
-               base = *default_base;
        }
 
        if (request_target[0] == '*' && request_target[1] == '\0') {
index 5427869574f0de73f6604e59458a7d3c1635b8fc..9ca2565d46fa0493014bedcd4e75970e5215a2c3 100644 (file)
@@ -759,6 +759,8 @@ client_handle_request(void *context,
        struct client *client = (struct client *)context;
        struct client_request *creq;
 
+       i_assert(hreq->target.url->have_ssl == tset.ssl);
+
        if (debug) {
                i_debug("test server: request method=`%s' path=`%s'",
                        hreq->method, path);