From e52a6184c485c274a9673ee3c5622794c00d6f02 Mon Sep 17 00:00:00 2001 From: Ignacio Rodriguez Date: Fri, 30 Jul 2021 12:34:55 -0500 Subject: [PATCH] test and fix --- mongoose.c | 2 +- src/url.c | 2 +- test/unit_test.c | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mongoose.c b/mongoose.c index bfd023af..44b5537c 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4049,7 +4049,7 @@ static struct url urlparse(const char *url) { u.port = 0; } else if (url[i] == ']') { u.port = 0; // IPv6 URLs, like http://[::1]/bar - } else if (url[i] == ':' && u.port == 0) { + } else if (url[i] == ':' && u.port == 0 && u.uri == 0) { u.port = i + 1; } else if (url[i] == '@' && u.user == 0 && u.pass == 0) { u.user = u.host; diff --git a/src/url.c b/src/url.c index b962a58e..0e9d7667 100644 --- a/src/url.c +++ b/src/url.c @@ -21,7 +21,7 @@ static struct url urlparse(const char *url) { u.port = 0; } else if (url[i] == ']') { u.port = 0; // IPv6 URLs, like http://[::1]/bar - } else if (url[i] == ':' && u.port == 0) { + } else if (url[i] == ':' && u.port == 0 && u.uri == 0) { u.port = i + 1; } else if (url[i] == '@' && u.user == 0 && u.pass == 0) { u.user = u.host; diff --git a/test/unit_test.c b/test/unit_test.c index 1cdb821d..35414733 100644 --- a/test/unit_test.c +++ b/test/unit_test.c @@ -125,6 +125,7 @@ static void test_url(void) { ASSERT(vcmp(mg_url_host("p://u:p@bar:1234/a"), "bar")); ASSERT(vcmp(mg_url_host("p://u:p@[::1]:1234/a"), "::1")); ASSERT(vcmp(mg_url_host("p://u:p@[1:2::3]:1234/a"), "1:2::3")); + ASSERT(vcmp(mg_url_host("p://foo/x:y/z"), "foo")); // Port ASSERT(mg_url_port("foo:1234") == 1234);