diff options
author | Liong Sauw Ming <ming@teluu.com> | 2011-03-15 03:20:37 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2011-03-15 03:20:37 +0000 |
commit | ab69db8c96ae19269067fd98e5ff1a046d78a2de (patch) | |
tree | 3849b7cf4c1f21625f0378ccd0d0c048000f256a /pjsip/src/pjsua-lib | |
parent | 477ebed76f7657565ef181da813ea2f7b409d24b (diff) |
Fixed #1205: Configurable delay before registration refresh setting in pjsua_acc_config
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3441 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_acc.c | 33 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 1 |
2 files changed, 26 insertions, 8 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index 1cf273f3..8435738a 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -99,6 +99,7 @@ PJ_DEF(void) pjsua_acc_config_dup( pj_pool_t *pool, pj_strdup_with_null(pool, &dst->proxy[i], &src->proxy[i]); dst->reg_timeout = src->reg_timeout; + dst->reg_delay_before_refresh = src->reg_delay_before_refresh; dst->cred_count = src->cred_count; for (i=0; i<src->cred_count; ++i) { @@ -392,11 +393,15 @@ PJ_DEF(pj_status_t) pjsua_acc_add( const pjsua_acc_config *cfg, /* Copy config */ pjsua_acc_config_dup(acc->pool, &pjsua_var.acc[id].cfg, cfg); - /* Normalize registration timeout */ - if (pjsua_var.acc[id].cfg.reg_uri.slen && - pjsua_var.acc[id].cfg.reg_timeout == 0) - { - pjsua_var.acc[id].cfg.reg_timeout = PJSUA_REG_INTERVAL; + /* Normalize registration timeout and refresh delay */ + if (pjsua_var.acc[id].cfg.reg_uri.slen) { + if (pjsua_var.acc[id].cfg.reg_timeout == 0) { + pjsua_var.acc[id].cfg.reg_timeout = PJSUA_REG_INTERVAL; + } + if (pjsua_var.acc[id].cfg.reg_delay_before_refresh == 0) { + pjsua_var.acc[id].cfg.reg_delay_before_refresh = + PJSIP_REGISTER_CLIENT_DELAY_BEFORE_REFRESH; + } } /* Get CRC of account proxy setting */ @@ -940,14 +945,22 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id, /* Registration */ acc->cfg.reg_timeout = cfg->reg_timeout; + acc->cfg.reg_delay_before_refresh = cfg->reg_delay_before_refresh; acc->cfg.unreg_timeout = cfg->unreg_timeout; acc->cfg.allow_contact_rewrite = cfg->allow_contact_rewrite; acc->cfg.reg_retry_interval = cfg->reg_retry_interval; acc->cfg.drop_calls_on_reg_fail = cfg->drop_calls_on_reg_fail; - /* Normalize registration timeout */ - if (acc->cfg.reg_uri.slen && acc->cfg.reg_timeout == 0) - acc->cfg.reg_timeout = PJSUA_REG_INTERVAL; + /* Normalize registration timeout and refresh delay */ + if (acc->cfg.reg_uri.slen ) { + if (acc->cfg.reg_timeout == 0) { + acc->cfg.reg_timeout = PJSUA_REG_INTERVAL; + } + if (acc->cfg.reg_delay_before_refresh == 0) { + acc->cfg.reg_delay_before_refresh = + PJSIP_REGISTER_CLIENT_DELAY_BEFORE_REFRESH; + } + } /* Registrar URI */ if (pj_strcmp(&acc->cfg.reg_uri, &cfg->reg_uri)) { @@ -1816,6 +1829,10 @@ static pj_status_t pjsua_regc_init(int acc_id) pjsip_regc_set_credentials( acc->regc, acc->cred_cnt, acc->cred); } + /* Set delay before registration refresh */ + pjsip_regc_set_delay_before_refresh(acc->regc, + acc->cfg.reg_delay_before_refresh); + /* Set authentication preference */ pjsip_regc_set_prefs(acc->regc, &acc->cfg.auth_pref); diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 16dda48a..d07f0063 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -166,6 +166,7 @@ PJ_DEF(void) pjsua_acc_config_default(pjsua_acc_config *cfg) pj_bzero(cfg, sizeof(*cfg)); cfg->reg_timeout = PJSUA_REG_INTERVAL; + cfg->reg_delay_before_refresh = PJSIP_REGISTER_CLIENT_DELAY_BEFORE_REFRESH; cfg->unreg_timeout = PJSUA_UNREG_TIMEOUT; pjsip_publishc_opt_default(&cfg->publish_opt); cfg->unpublish_max_wait_time_msec = PJSUA_UNPUBLISH_MAX_WAIT_TIME_MSEC; |