Index: url.c =================================================================== --- url.c (revision 3774) +++ url.c (revision 3989) @@ -555,7 +555,7 @@ static int _url_d(url_t *url, char *s) { - size_t n; + size_t n, p; char *s0, rest_c, *host; int net_path = 1; @@ -592,9 +592,12 @@ if (url->url_type == url_sip || url->url_type == url_sips) { /* SIP URL may have /; in user part */ - n = strcspn(s, "@#"); /* Opaque part */ - if (s[n] != '@') - n = 0; + n = strcspn(s, "@#"); /* Opaque part */ + if ((p = strcspn(s, "#")) == n) { + n = strcspn(s, "@"); + if (s[n] != '@') + n = 0; + } n += strcspn(s + n, "/;?#"); } else if (url->url_type == url_wv) {