From 07075e93555b7504ace08c9693791f6cf13c4e62 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 13 Jul 2012 07:38:06 +0000 Subject: Fixed #1553: Account setting to disable re-INVITE or UPDATE to lock codec git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4204 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/include/pjsua-lib/pjsua.h | 9 +++++++++ pjsip/src/pjsua-lib/pjsua_call.c | 4 ++++ pjsip/src/pjsua-lib/pjsua_core.c | 1 + 3 files changed, 14 insertions(+) diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h index f95cd29f..d6b74a53 100644 --- a/pjsip/include/pjsua-lib/pjsua.h +++ b/pjsip/include/pjsua-lib/pjsua.h @@ -2743,6 +2743,15 @@ typedef struct pjsua_acc_config */ pj_str_t proxy[PJSUA_ACC_MAX_PROXIES]; + /** + * If remote sends SDP answer containing more than one format or codec in + * the media line, send re-INVITE or UPDATE with just one codec to lock + * which codec to use. + * + * Default: 1 (Yes). Set to zero to disable. + */ + unsigned lock_codec; + /** * Optional interval for registration, in seconds. If the value is zero, * default interval will be used (PJSUA_REG_INTERVAL, 300 seconds). diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index fd7407d6..45ce8eb8 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -3060,6 +3060,10 @@ static pj_status_t lock_codec(pjsua_call *call) pj_bool_t has_mult_fmt = PJ_FALSE; pj_status_t status; + if (!pjsua_var.acc[call->acc_id].cfg.lock_codec) { + return PJ_SUCCESS; + } + /* Stop lock codec timer, if it is active */ if (call->lock_codec.reinv_timer.id) { pjsip_endpt_cancel_timer(pjsua_var.endpt, diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 28464b09..f4071c0e 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -215,6 +215,7 @@ PJ_DEF(void) pjsua_acc_config_default(pjsua_acc_config *cfg) cfg->require_100rel = pjsua_var.ua_cfg.require_100rel; cfg->use_timer = pjsua_var.ua_cfg.use_timer; cfg->timer_setting = pjsua_var.ua_cfg.timer_setting; + cfg->lock_codec = 1; cfg->ka_interval = 15; cfg->ka_data = pj_str("\r\n"); cfg->vid_cap_dev = PJMEDIA_VID_DEFAULT_CAPTURE_DEV; -- cgit v1.2.3