From 0cdb878abb285692e327926db26e0e265b531274 Mon Sep 17 00:00:00 2001
From: Joshua Colp <jcolp@digium.com>
Date: Thu, 25 May 2006 21:06:08 +0000
Subject: [PATCH] Remove possibility of sending duplicate MeetmeJoin manager
 events, and only send a MeetmeLeave event if a MeetmeJoin event occured in
 the first place. (issue #6599 reported by imran - provided patch with few
 tiny mods)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@30409 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 apps/app_meetme.c | 44 +++++++++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index b1385bedc7..6cd7faee7d 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -883,6 +883,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
 	int using_pseudo = 0;
 	int duration=20;
 	int hr, min, sec;
+	int sent_event = 0;
 	time_t now;
 	struct ast_dsp *dsp=NULL;
 	struct ast_app *app;
@@ -1135,12 +1136,15 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
 	}
 	ast_log(LOG_DEBUG, "Placed channel %s in ZAP conf %d\n", chan->name, conf->zapconf);
 
-	manager_event(EVENT_FLAG_CALL, "MeetmeJoin", 
-		      "Channel: %s\r\n"
-		      "Uniqueid: %s\r\n"
-		      "Meetme: %s\r\n"
-		      "Usernum: %d\r\n",
-		      chan->name, chan->uniqueid, conf->confno, user->user_no);
+	if (!sent_event) {
+		manager_event(EVENT_FLAG_CALL, "MeetmeJoin", 
+			      "Channel: %s\r\n"
+			      "Uniqueid: %s\r\n"
+			      "Meetme: %s\r\n"
+			      "Usernum: %d\r\n",
+			      chan->name, chan->uniqueid, conf->confno, user->user_no);
+		sent_event = 1;
+	}
 
 	if (!firstpass && !(confflags & CONFFLAG_MONITOR) && !(confflags & CONFFLAG_ADMIN)) {
 		firstpass = 1;
@@ -1693,19 +1697,21 @@ bailoutandtrynormal:
 		min = ((now - user->jointime) % 3600) / 60;
 		sec = (now - user->jointime) % 60;
 
-		manager_event(EVENT_FLAG_CALL, "MeetmeLeave",
-			"Channel: %s\r\n"
-			"Uniqueid: %s\r\n"
-			"Meetme: %s\r\n"
-			"Usernum: %d\r\n"
-		        "CallerIDnum: %s\r\n"
-			"CallerIDname: %s\r\n"
-		        "Duration: %ld\r\n",
-			chan->name, chan->uniqueid, conf->confno, 
-			user->user_no,
-			S_OR(user->chan->cid.cid_num, "<unknown>"),
-			S_OR(user->chan->cid.cid_name, "<unknown>"),
-			(now - user->jointime));
+		if (sent_event) {
+			manager_event(EVENT_FLAG_CALL, "MeetmeLeave",
+				      "Channel: %s\r\n"
+				      "Uniqueid: %s\r\n"
+				      "Meetme: %s\r\n"
+				      "Usernum: %d\r\n"
+				      "CallerIDnum: %s\r\n"
+				      "CallerIDname: %s\r\n"
+				      "Duration: %ld\r\n",
+				      chan->name, chan->uniqueid, conf->confno, 
+				      user->user_no,
+				      S_OR(user->chan->cid.cid_num, "<unknown>"),
+				      S_OR(user->chan->cid.cid_name, "<unknown>"),
+				      (now - user->jointime));
+		}
 
 		conf->users--;
 		conf->refcount--;
-- 
GitLab