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;
if (url->url_type == url_sip || url->url_type == url_sips) {
/* SIP URL may have /; in user part */
- n = strcspn(s, "@"); /* Opaque part */
- if (n == strlen(s)) {
- if ((strchr(s, '#')))
- n = 0;
- } else {
- if (strchr(s + n, '#'))
- n = 0;
- }
+#if 1\r
+ n = strcspn(s, "@#"); /* Opaque part */\r
+ if ((p = strcspn(s, "#")) == n) {\r
+ n = strcspn(s, "@");\r
+ if (s[n] != '@')\r
+ n = 0;\r
+ }\r
+#else\r
+ n = strcspn(s, "@");/* Opaque part */\r
+ if (n == strlen(s)) {\r
+ if ((strchr(s, '#')))\r
+ n = 0;\r
+ } else {\r
+ if (strchr(s + n, '#'))\r
+ n = 0;\r
+ }\r
+#endif\r
n += strcspn(s + n, "/;?#");
}
else if (url->url_type == url_wv) {