mirror of https://github.com/omar-polo/gmid.git
normalize host name when parsing the IRI
RFC3986 3.2.2 "Host" says that > Although host is case-insensitive, producers and normalizers should > use lowercase for registered names and hexadecimal addresses for the > sake of uniformity, while only using uppercase letters for > percent-encodings. so we cope with that.
This commit is contained in:
parent
1590277007
commit
e4d82becb7
6
iri.c
6
iri.c
|
@ -146,8 +146,12 @@ parse_authority(struct parser *p)
|
||||||
|
|
||||||
while (unreserved(*p->iri)
|
while (unreserved(*p->iri)
|
||||||
|| sub_delimiters(*p->iri)
|
|| sub_delimiters(*p->iri)
|
||||||
|| parse_pct_encoded(p))
|
|| parse_pct_encoded(p)) {
|
||||||
|
/* normalize the host name. */
|
||||||
|
if (*p->iri < 0x7F)
|
||||||
|
*p->iri = tolower(*p->iri);
|
||||||
p->iri++;
|
p->iri++;
|
||||||
|
}
|
||||||
|
|
||||||
if (p->err != NULL)
|
if (p->err != NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -123,6 +123,10 @@ main(void)
|
||||||
FAIL,
|
FAIL,
|
||||||
empty,
|
empty,
|
||||||
"FAIL with invalid port number");
|
"FAIL with invalid port number");
|
||||||
|
TEST("gemini://OmArPoLo.CoM",
|
||||||
|
PASS,
|
||||||
|
IRI("gemini", "omarpolo.com", "", "", "", ""),
|
||||||
|
"host is case-insensitive");
|
||||||
|
|
||||||
/* path */
|
/* path */
|
||||||
TEST("gemini://omarpolo.com/foo/bar/baz",
|
TEST("gemini://omarpolo.com/foo/bar/baz",
|
||||||
|
|
Loading…
Reference in New Issue