|
@@ -1947,11 +1947,15 @@ const char *extract_domain(size_t * const out_domainlen, const char * const uri,
|
|
|
// part of the URI scheme, ignore it
|
|
// part of the URI scheme, ignore it
|
|
|
while (p[0] == '/')
|
|
while (p[0] == '/')
|
|
|
++p;
|
|
++p;
|
|
|
- p = memchr(p, '/', urilen - (p - uri)) ?: &uri[urilen];
|
|
|
|
|
|
|
+ p = memchr(p, '/', urilen - (p - uri));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- else
|
|
|
|
|
- p = &uri[urilen];
|
|
|
|
|
|
|
+ if (!p)
|
|
|
|
|
+ {
|
|
|
|
|
+ p = memchr(uri, '?', urilen) ?:
|
|
|
|
|
+ memchr(uri, '#', urilen) ?:
|
|
|
|
|
+ &uri[urilen];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
s = p;
|
|
s = p;
|
|
|
q = my_memrchr(uri, ':', p - uri);
|
|
q = my_memrchr(uri, ':', p - uri);
|
|
@@ -2044,6 +2048,14 @@ void test_domain_funcs()
|
|
|
_test_extract_domain("s.m.eligius.st", "stratum+tcp://s.m.eligius.st.:3334///");
|
|
_test_extract_domain("s.m.eligius.st", "stratum+tcp://s.m.eligius.st.:3334///");
|
|
|
_test_extract_domain("s.m.eligius.st", "s.m.eligius.st:3334");
|
|
_test_extract_domain("s.m.eligius.st", "s.m.eligius.st:3334");
|
|
|
_test_extract_domain("s.m.eligius.st", "s.m.eligius.st:3334///");
|
|
_test_extract_domain("s.m.eligius.st", "s.m.eligius.st:3334///");
|
|
|
|
|
+ _test_extract_domain("s.m.eligius.st", "http://s.m.eligius.st:3334#foo");
|
|
|
|
|
+ _test_extract_domain("s.m.eligius.st", "http://s.m.eligius.st:3334?foo");
|
|
|
|
|
+ _test_extract_domain("s.m.eligius.st", "http://s.m.eligius.st#foo");
|
|
|
|
|
+ _test_extract_domain("s.m.eligius.st", "http://s.m.eligius.st?foo");
|
|
|
|
|
+ _test_extract_domain("s.m.eligius.st", "s.m.eligius.st#foo");
|
|
|
|
|
+ _test_extract_domain("s.m.eligius.st", "s.m.eligius.st?foo");
|
|
|
|
|
+ _test_extract_domain("s.m.eligius.st", "s.m.eligius.st:3334#foo");
|
|
|
|
|
+ _test_extract_domain("s.m.eligius.st", "s.m.eligius.st:3334?foo");
|
|
|
_test_extract_domain("foohost", "foohost:3334");
|
|
_test_extract_domain("foohost", "foohost:3334");
|
|
|
_test_extract_domain("foohost", "foohost:3334///");
|
|
_test_extract_domain("foohost", "foohost:3334///");
|
|
|
_test_extract_domain("foohost", "foohost:3334/abc.com//");
|
|
_test_extract_domain("foohost", "foohost:3334/abc.com//");
|