Merge pull request #1324 from ignacionr/fix/issue-1323

allow for in-url colon, when port is not specified
This commit is contained in:
Sergey Lyubka authored and GitHub committed 2021-07-31 22:30:04 +01:00
commit 3ea4f1fda8
3 files changed
+3 -2

No files matched your search

+1 -1
View File
@@ -4045,7 +4045,7 @@ static struct url urlparse(const char *url) {
u.port = 0; u.port = 0;
} else if (url[i] == ']') { } else if (url[i] == ']') {
u.port = 0; // IPv6 URLs, like http://[::1]/bar 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; u.port = i + 1;
} else if (url[i] == '@' && u.user == 0 && u.pass == 0) { } else if (url[i] == '@' && u.user == 0 && u.pass == 0) {
u.user = u.host; u.user = u.host;
+1 -1
View File
@@ -21,7 +21,7 @@ static struct url urlparse(const char *url) {
u.port = 0; u.port = 0;
} else if (url[i] == ']') { } else if (url[i] == ']') {
u.port = 0; // IPv6 URLs, like http://[::1]/bar 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; u.port = i + 1;
} else if (url[i] == '@' && u.user == 0 && u.pass == 0) { } else if (url[i] == '@' && u.user == 0 && u.pass == 0) {
u.user = u.host; u.user = u.host;
+1
View File
@@ -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@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]: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://u:p@[1:2::3]:1234/a"), "1:2::3"));
ASSERT(vcmp(mg_url_host("p://foo/x:y/z"), "foo"));
// Port // Port
ASSERT(mg_url_port("foo:1234") == 1234); ASSERT(mg_url_port("foo:1234") == 1234);