From c9b26eb7ceb78db68d2ca0dd293a49c31794d203 Mon Sep 17 00:00:00 2001
From: Brian West <brian@freeswitch.org>
Date: Thu, 28 May 2009 19:38:32 +0000
Subject: [PATCH]  minor tweak

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13489 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/switch_rtp.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/switch_rtp.c b/src/switch_rtp.c
index 9f93efc1cf..e4e3031c74 100644
--- a/src/switch_rtp.c
+++ b/src/switch_rtp.c
@@ -71,6 +71,7 @@ typedef srtp_hdr_t rtp_hdr_t;
 static zrtp_global_t *zrtp_global;
 static zrtp_zid_t zid = { "FreeSWITCH01" };
 static int zrtp_on = 0;
+#define ZRTP_MITM_TRIES 30
 #endif
 
 #ifdef _MSC_VER
@@ -509,6 +510,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event)
 	case ZRTP_EVENT_IS_PENDINGSECURE:
 		break;
 	case ZRTP_EVENT_IS_PENDINGCLEAR:
+		switch_channel_set_variable(channel, "zrtp_secure_media_confirmed", "false");
 		switch_clear_flag(rtp_session, SWITCH_ZRTP_FLAG_SECURE_SEND);
 		switch_clear_flag(rtp_session, SWITCH_ZRTP_FLAG_SECURE_RECV);
 		switch_clear_flag(rtp_session, SWITCH_ZRTP_FLAG_SECURE_MITM_SEND);
@@ -516,6 +518,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event)
 		rtp_session->zrtp_mitm_tries = 0;
 		break;
 	case ZRTP_EVENT_NO_ZRTP:
+		switch_channel_set_variable(channel, "zrtp_secure_media_confirmed", "false");
 		break;
 	default:
 		break;
@@ -2275,7 +2278,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read_frame(switch_rtp_t *rtp
 			if (zrtp_session_info.sas_is_ready) {    
 				frame->extra_data = rtp_session->zrtp_ctx;
 				switch_set_flag(frame, SFF_ZRTP);
-				if (rtp_session->zrtp_mitm_tries > 30) {
+				if (rtp_session->zrtp_mitm_tries > ZRTP_MITM_TRIES) {
 					zrtp_verified_set(zrtp_global, &rtp_session->zrtp_session->zid, 
 									  &rtp_session->zrtp_session->peer_zid, zrtp_session_info.sas_is_verified^1);
 					switch_clear_flag(rtp_session, SWITCH_ZRTP_FLAG_SECURE_MITM_RECV);
@@ -2712,12 +2715,14 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_fra
 
 		if (zrtp_status_ok == zrtp_session_get(rtp_session->zrtp_session, &zrtp_session_info)) { 
 			if (zrtp_session_info.sas_is_ready) {    
-				if (zrtp_status_ok == zrtp_resolve_mitm_call(frame->extra_data, rtp_session->zrtp_ctx)) {
+				if (rtp_session->zrtp_mitm_tries > ZRTP_MITM_TRIES) {
+					switch_clear_flag(rtp_session, SWITCH_ZRTP_FLAG_SECURE_MITM_SEND);
+				} else if(zrtp_status_ok == zrtp_resolve_mitm_call(frame->extra_data, rtp_session->zrtp_ctx)) {
 					switch_clear_flag(rtp_session, SWITCH_ZRTP_FLAG_SECURE_MITM_SEND);
 					zrtp_verified_set(zrtp_global, &rtp_session->zrtp_session->zid, 
 									  &rtp_session->zrtp_session->peer_zid, zrtp_session_info.sas_is_verified^1);
+					rtp_session->zrtp_mitm_tries++;
 				}
-				rtp_session->zrtp_mitm_tries++;
 			}
 		}
 	}