forked from Mirrors/freeswitch
fix url parser from when I broke it trying to fix it, but now it's fixed.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3988 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
ed0524c2fc
commit
5208bffe46
@ -555,7 +555,7 @@ enum url_type_e url_get_type(char const *scheme, size_t len)
|
||||
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,14 +592,23 @@ int _url_d(url_t *url, char *s)
|
||||
|
||||
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
|
||||
n = strcspn(s, "@#"); /* Opaque part */
|
||||
if ((p = strcspn(s, "#")) == n) {
|
||||
n = strcspn(s, "@");
|
||||
if (s[n] != '@')
|
||||
n = 0;
|
||||
}
|
||||
#else
|
||||
n = strcspn(s, "@");/* Opaque part */
|
||||
if (n == strlen(s)) {
|
||||
if ((strchr(s, '#')))
|
||||
n = 0;
|
||||
} else {
|
||||
if (strchr(s + n, '#'))
|
||||
n = 0;
|
||||
}
|
||||
#endif
|
||||
n += strcspn(s + n, "/;?#");
|
||||
}
|
||||
else if (url->url_type == url_wv) {
|
||||
|
Loading…
Reference in New Issue
Block a user