From 6e7c99b00209bbdb5403cec88f6b7ad01e25526c Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Tue, 28 Sep 2010 07:43:18 +0000 Subject: Closed #1139 (Support for tel: URI in PJSUA-LIB): - added new PJSUA API: pjsua_verify_url() which can be used for tel: URI - modified and tested according to spec - added new PJSIP error code, PJSIP_ENOROUTESET, to indicate that route set is needed to send to tel: URI - added couple of unit tests (we can't cover the whole tel: URI scenario yet) git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3323 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_core.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'pjsip/src/pjsua-lib/pjsua_core.c') diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 9fb0a5d0..0dcd0f2a 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -2404,6 +2404,29 @@ PJ_DEF(pj_status_t) pjsua_get_nat_type(pj_stun_nat_type *type) return pjsua_var.nat_status; } +/* + * Verify that valid url is given. + */ +PJ_DEF(pj_status_t) pjsua_verify_url(const char *c_url) +{ + pjsip_uri *p; + pj_pool_t *pool; + char *url; + int len = (c_url ? pj_ansi_strlen(c_url) : 0); + + if (!len) return PJSIP_EINVALIDURI; + + pool = pj_pool_create(&pjsua_var.cp.factory, "check%p", 1024, 0, NULL); + if (!pool) return PJ_ENOMEM; + + url = (char*) pj_pool_alloc(pool, len+1); + pj_ansi_strcpy(url, c_url); + + p = pjsip_parse_uri(pool, url, len, 0); + + pj_pool_release(pool); + return p ? 0 : PJSIP_EINVALIDURI; +} /* * Verify that valid SIP url is given. @@ -2415,10 +2438,10 @@ PJ_DEF(pj_status_t) pjsua_verify_sip_url(const char *c_url) char *url; int len = (c_url ? pj_ansi_strlen(c_url) : 0); - if (!len) return -1; + if (!len) return PJSIP_EINVALIDURI; pool = pj_pool_create(&pjsua_var.cp.factory, "check%p", 1024, 0, NULL); - if (!pool) return -1; + if (!pool) return PJ_ENOMEM; url = (char*) pj_pool_alloc(pool, len+1); pj_ansi_strcpy(url, c_url); @@ -2431,7 +2454,7 @@ PJ_DEF(pj_status_t) pjsua_verify_sip_url(const char *c_url) } pj_pool_release(pool); - return p ? 0 : -1; + return p ? 0 : PJSIP_EINVALIDURI; } /* -- cgit v1.2.3