*/
url->URL = NewStrBufDup(UrlStr);
url->Host = pch = ChrPtr(url->URL);
- url->LocalPart = strchr(pch, '/');
+ pEndHost = url->LocalPart = strchr(pch, '/');
if (url->LocalPart != NULL) {
if ((*(url->LocalPart + 1) == '/') &&
(*(url->LocalPart - 1) == ':')) { /* TODO: find default port for this protocol... */
url->Host = url->LocalPart + 2;
- url->LocalPart = strchr(url->Host, '/');
+ pEndHost = url->LocalPart = strchr(url->Host, '/');
if (url->LocalPart != NULL)
{
StrBufPeek(url->URL, url->LocalPart, 0, '\0');
}
}
if (url->LocalPart == NULL) {
- url->LocalPart = pch + StrLength(url->URL);
+ pEndHost = url->LocalPart = ChrPtr(url->URL) + StrLength(url->URL);
}
- pCredEnd = strchr(pch, '@');
+ pCredEnd = strrchr(ChrPtr(url->URL), '@');
if (pCredEnd >= url->LocalPart)
pCredEnd = NULL;
if (pCredEnd != NULL)
((struct sockaddr_in *)&(url->Addr))->sin_port = htons(url->Port);
((struct sockaddr_in *)&(url->Addr))->sin_family = AF_INET;
}
- }
+ }
+ if (*Url != NULL)
+ url->Next = *Url;
*Url = url;
return 1;
}