diff options
author | Benny Prijono <bennylp@teluu.com> | 2010-09-28 07:43:18 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2010-09-28 07:43:18 +0000 |
commit | 6e7c99b00209bbdb5403cec88f6b7ad01e25526c (patch) | |
tree | a96b1174be66eaca9d756c71fc76898ccdffa9c5 /pjsip/src/pjsua-lib/pjsua_acc.c | |
parent | 956dfe0b552043fbd5ce2181219feeb59b7f459f (diff) |
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
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_acc.c')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_acc.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index abb61b15..fdd37a51 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -119,7 +119,7 @@ static pj_status_t initialize_acc(unsigned acc_id) pjsua_acc_config *acc_cfg = &pjsua_var.acc[acc_id].cfg; pjsua_acc *acc = &pjsua_var.acc[acc_id]; pjsip_name_addr *name_addr; - pjsip_sip_uri *sip_uri, *sip_reg_uri; + pjsip_sip_uri *sip_reg_uri; pj_status_t status; unsigned i; @@ -136,18 +136,27 @@ static pj_status_t initialize_acc(unsigned acc_id) } /* Local URI MUST be a SIP or SIPS: */ - if (!PJSIP_URI_SCHEME_IS_SIP(name_addr) && !PJSIP_URI_SCHEME_IS_SIPS(name_addr)) { - pjsua_perror(THIS_FILE, "Invalid local URI", - PJSIP_EINVALIDSCHEME); - return PJSIP_EINVALIDSCHEME; - } + acc->display = name_addr->display; + acc->user_part = name_addr->display; + acc->srv_domain = pj_str(""); + acc->srv_port = 0; + } else { + pjsip_sip_uri *sip_uri; + /* Get the SIP URI object: */ + sip_uri = (pjsip_sip_uri*) pjsip_uri_get_uri(name_addr); - /* Get the SIP URI object: */ - sip_uri = (pjsip_sip_uri*) pjsip_uri_get_uri(name_addr); + /* Save the user and domain part. These will be used when finding an + * account for incoming requests. + */ + acc->display = name_addr->display; + acc->user_part = sip_uri->user; + acc->srv_domain = sip_uri->host; + acc->srv_port = 0; + } /* Parse registrar URI, if any */ @@ -177,14 +186,6 @@ static pj_status_t initialize_acc(unsigned acc_id) sip_reg_uri = NULL; } - /* Save the user and domain part. These will be used when finding an - * account for incoming requests. - */ - acc->display = name_addr->display; - acc->user_part = sip_uri->user; - acc->srv_domain = sip_uri->host; - acc->srv_port = 0; - if (sip_reg_uri) { acc->srv_port = sip_reg_uri->port; } @@ -2160,7 +2161,7 @@ PJ_DEF(pj_status_t) pjsua_acc_create_uac_contact( pj_pool_t *pool, /* For non-SIP scheme, route set should be configured */ if (!PJSIP_URI_SCHEME_IS_SIP(uri) && !PJSIP_URI_SCHEME_IS_SIPS(uri)) - return PJSIP_EINVALIDREQURI; + return PJSIP_ENOROUTESET; sip_uri = (pjsip_sip_uri*)pjsip_uri_get_uri(uri); } |