summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2012-07-13 07:38:06 +0000
committerBenny Prijono <bennylp@teluu.com>2012-07-13 07:38:06 +0000
commit07075e93555b7504ace08c9693791f6cf13c4e62 (patch)
tree2e3b86ab72e461080500d653713c9ffa5576cb53
parent731e8056a506187e2ba8b809d782e18164cf765e (diff)
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
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h9
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c4
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c1
3 files changed, 14 insertions, 0 deletions
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;