summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c4
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c3
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c9
3 files changed, 15 insertions, 1 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index fbda32c2..0163ed5b 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -754,6 +754,10 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id,
acc->cfg.srtp_optional_dup_offer = cfg->srtp_optional_dup_offer;
#endif
+#if defined(PJMEDIA_STREAM_ENABLE_KA) && (PJMEDIA_STREAM_ENABLE_KA != 0)
+ acc->cfg.use_stream_ka = cfg->use_stream_ka;
+#endif
+
/* Global outbound proxy */
if (global_route_crc != acc->global_route_crc) {
unsigned i, rcnt;
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index a0e43b21..9fb0a5d0 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -185,6 +185,9 @@ PJ_DEF(void) pjsua_acc_config_default(pjsua_acc_config *cfg)
cfg->contact_rewrite_method = PJSUA_CONTACT_REWRITE_METHOD;
cfg->reg_use_proxy = PJSUA_REG_USE_OUTBOUND_PROXY |
PJSUA_REG_USE_ACC_PROXY;
+#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0
+ cfg->use_stream_ka = (PJMEDIA_STREAM_ENABLE_KA != 0);
+#endif
}
PJ_DEF(void) pjsua_buddy_config_default(pjsua_buddy_config *cfg)
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 2eb08944..85a28ccf 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -1545,8 +1545,10 @@ pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
/* Reset session info with only one media stream */
sess_info.stream_cnt = 1;
- if (si != &sess_info.stream_info[0])
+ if (si != &sess_info.stream_info[0]) {
pj_memcpy(&sess_info.stream_info[0], si, sizeof(pjmedia_stream_info));
+ si = &sess_info.stream_info[0];
+ }
/* Check if no media is active */
if (sess_info.stream_cnt == 0 || si->dir == PJMEDIA_DIR_NONE)
@@ -1638,6 +1640,11 @@ pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
si->rtp_seq = call->rtp_tx_seq;
si->rtp_seq_ts_set = call->rtp_tx_seq_ts_set;
+#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0
+ /* Enable/disable stream keep-alive and NAT hole punch. */
+ si->use_ka = pjsua_var.acc[call->acc_id].cfg.use_stream_ka;
+#endif
+
/* Create session based on session info. */
status = pjmedia_session_create( pjsua_var.med_endpt, &sess_info,
&call->med_tp,