summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2015-06-01 03:44:16 +0000
committerNanang Izzuddin <nanang@teluu.com>2015-06-01 03:44:16 +0000
commitaaa478efe114f6a1d4e12432be9808ac1b7090c2 (patch)
treecbd911f04d63301d2a57341a409c4f2a79c85c5f /pjmedia
parent5bb6d872c7bd5a258152fcb57b16acaf3012385f (diff)
Close #1856: Offer only current active crypto on re-INVITE.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5103 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia/transport_srtp.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c
index 3b4b2f2c..59d5dd81 100644
--- a/pjmedia/src/pjmedia/transport_srtp.c
+++ b/pjmedia/src/pjmedia/transport_srtp.c
@@ -1363,8 +1363,17 @@ static pj_status_t transport_encode_sdp(pjmedia_transport *tp,
/* Generate crypto attribute if not yet */
if (pjmedia_sdp_media_find_attr(m_loc, &ID_CRYPTO, NULL) == NULL) {
+ /* Offer only current active crypto if any, otherwise offer all
+ * crypto-suites in the setting.
+ */
for (i=0; i<srtp->setting.crypto_count; ++i) {
- /* Offer crypto-suites based on setting. */
+ if (srtp->tx_policy.name.slen &&
+ pj_stricmp(&srtp->tx_policy.name,
+ &srtp->setting.crypto[i].name) != 0)
+ {
+ continue;
+ }
+
buffer_len = MAXLEN;
status = generate_crypto_attr_value(srtp->pool, buffer, &buffer_len,
&srtp->setting.crypto[i],