summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_acc.c
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2011-03-15 03:20:37 +0000
committerLiong Sauw Ming <ming@teluu.com>2011-03-15 03:20:37 +0000
commitab69db8c96ae19269067fd98e5ff1a046d78a2de (patch)
tree3849b7cf4c1f21625f0378ccd0d0c048000f256a /pjsip/src/pjsua-lib/pjsua_acc.c
parent477ebed76f7657565ef181da813ea2f7b409d24b (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/pjsua_acc.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c33
1 files changed, 25 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);