diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-07-17 11:24:45 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-07-17 11:24:45 +0000 |
commit | dc7f5a1c7646e0240f54fe95f8a1755cace45cf4 (patch) | |
tree | 88b7e0ce446e9cc431fda5df65dd608539a4175c /pjsip | |
parent | 0953831bdd54f4ae1fd29c9e37f1d242f03aa51e (diff) |
Bug fix of previous bug fix
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@608 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/include/pjsip/sip_parser.h | 1 | ||||
-rw-r--r-- | pjsip/src/pjsip/sip_parser.c | 8 |
2 files changed, 6 insertions, 3 deletions
diff --git a/pjsip/include/pjsip/sip_parser.h b/pjsip/include/pjsip/sip_parser.h index fe788395..452f5f4d 100644 --- a/pjsip/include/pjsip/sip_parser.h +++ b/pjsip/include/pjsip/sip_parser.h @@ -312,6 +312,7 @@ extern pj_cis_t pjsip_ALPHA_SPEC, /**< Alpha (A-Z, a-z) */ pjsip_ALNUM_SPEC, /**< Decimal + Alpha. */ pjsip_TOKEN_SPEC, /**< Token. */ + pjsip_TOKEN_SPEC_ESC, /**< Token without '%' character */ pjsip_HEX_SPEC, /**< Hexadecimal digits. */ pjsip_PARAM_CHAR_SPEC, /**< For scanning pname (or pvalue when it's not quoted.) in URI */ diff --git a/pjsip/src/pjsip/sip_parser.c b/pjsip/src/pjsip/sip_parser.c index df9f02f8..48ce50b1 100644 --- a/pjsip/src/pjsip/sip_parser.c +++ b/pjsip/src/pjsip/sip_parser.c @@ -112,6 +112,7 @@ pj_cis_t pjsip_HOST_SPEC, /* For scanning host part. */ pjsip_ALPHA_SPEC, /* Alpha (A-Z, a-z) */ pjsip_ALNUM_SPEC, /* Decimal + Alpha. */ pjsip_TOKEN_SPEC, /* Token. */ + pjsip_TOKEN_SPEC_ESC, /* Token without '%' character */ pjsip_HEX_SPEC, /* Hexadecimal digits. */ pjsip_PARAM_CHAR_SPEC, /* For scanning pname (or pvalue when * it's not quoted.) */ @@ -328,8 +329,9 @@ static pj_status_t init_parser() PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); pj_cis_add_str( &pjsip_TOKEN_SPEC, TOKEN); - /* TOKEN must not have '%' */ - pj_assert(pj_cis_match(&pjsip_TOKEN_SPEC, '%')==0); + status = pj_cis_dup(&pjsip_TOKEN_SPEC_ESC, &pjsip_TOKEN_SPEC); + PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); + pj_cis_del_str(&pjsip_TOKEN_SPEC_ESC, "%"); status = pj_cis_dup(&pjsip_HOST_SPEC, &pjsip_ALNUM_SPEC); PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); @@ -1083,7 +1085,7 @@ void pjsip_parse_param_imp( pj_scanner *scanner, pj_pool_t *pool, unsigned option) { parse_param_imp(scanner, pool, pname, pvalue, &pjsip_TOKEN_SPEC, - &pjsip_TOKEN_SPEC, option); + &pjsip_TOKEN_SPEC_ESC, option); } |