summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-07-17 11:24:45 +0000
committerBenny Prijono <bennylp@teluu.com>2006-07-17 11:24:45 +0000
commitdc7f5a1c7646e0240f54fe95f8a1755cace45cf4 (patch)
tree88b7e0ce446e9cc431fda5df65dd608539a4175c /pjsip
parent0953831bdd54f4ae1fd29c9e37f1d242f03aa51e (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.h1
-rw-r--r--pjsip/src/pjsip/sip_parser.c8
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);
}