]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8320 #resolve [ZRTP broken in commit 06c56a037eb0b750ee41c46838a8729de9798d84]
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 9 Oct 2015 17:57:36 +0000 (12:57 -0500)
committerBrian West <brian@freeswitch.org>
Fri, 9 Oct 2015 17:57:52 +0000 (12:57 -0500)
conf/testing/autoload_configs/switch.conf.xml
src/switch_rtp.c

index 4ffe878563d046c2e747234e52c20ca0c3ad39e4..8e66e7159f5baa8d6fea63cee148078017a7c190 100644 (file)
     <!-- Test each port to make sure it is not in use by some other process before allocating it to RTP -->
     <!-- <param name="rtp-port-usage-robustness" value="true"/> -->
 
-    <param name="rtp-enable-zrtp" value="false"/>
+    <param name="rtp-enable-zrtp" value="true"/>
 
     <!-- <param name="core-db-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE'" /> -->
     <!-- <param name="core-db-dsn" value="dsn:username:password" /> -->
index 674b2b33ed34dc301c0e0709d89daf01ca793af7..ea5fc24504d922fabe1b3a36faea4ed926fcf116 100644 (file)
@@ -71,6 +71,7 @@
 #define WARN_SRTP_ERRS 10
 #define MAX_SRTP_ERRS 100
 #define NTP_TIME_OFFSET 2208988800UL
+#define ZRTP_MAGIC_COOKIE 0x5a525450
 static const switch_payload_t INVALID_PT = 255;
 
 #define DTMF_SANITY (rtp_session->one_second * 30)
@@ -5077,7 +5078,8 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
        if (*bytes) {
                b = (unsigned char *) &rtp_session->recv_msg;
 
-               rtp_session->has_rtp = (rtp_session->recv_msg.header.version == 2);
+               /* version 2 probably rtp, zrtp cookie present means zrtp */
+               rtp_session->has_rtp = (rtp_session->recv_msg.header.version == 2 || ntohl(*(int *)(b+4)) == ZRTP_MAGIC_COOKIE);
 
                if ((*b >= 20) && (*b <= 64)) {
                        rtp_session->dtls->bytes = *bytes;
@@ -5085,7 +5087,6 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
                        rtp_session->has_ice = 0;
                        rtp_session->has_rtp = 0;
                        rtp_session->has_rtcp = 0;
-
                } else if (*b == 0 || *b == 1) {
                        rtp_session->has_ice = 1;
                        rtp_session->has_rtp = 0;