Index: pbx/pbx_realtime.c
===================================================================
--- pbx/pbx_realtime.c	(revision 187672)
+++ pbx/pbx_realtime.c	(working copy)
@@ -203,15 +203,16 @@
 						 term_color(tmp1, app, COLOR_BRCYAN, 0, sizeof(tmp1)),
 						 term_color(tmp2, chan->name, COLOR_BRMAGENTA, 0, sizeof(tmp2)),
 						 term_color(tmp3, S_OR(appdata, ""), COLOR_BRMAGENTA, 0, sizeof(tmp3)));
-				manager_event(EVENT_FLAG_CALL, "Newexten",
-							  "Channel: %s\r\n"
-							  "Context: %s\r\n"
-							  "Extension: %s\r\n"
-							  "Priority: %d\r\n"
-							  "Application: %s\r\n"
-							  "AppData: %s\r\n"
-							  "Uniqueid: %s\r\n",
-							  chan->name, chan->context, chan->exten, chan->priority, app, !ast_strlen_zero(appdata) ? appdata : "(NULL)", chan->uniqueid);
+				if (chan->send_manager)			   
+					manager_event(EVENT_FLAG_CALL, "Newexten",
+								  "Channel: %s\r\n"
+								  "Context: %s\r\n"
+								  "Extension: %s\r\n"
+								  "Priority: %d\r\n"
+								  "Application: %s\r\n"
+								  "AppData: %s\r\n"
+								  "Uniqueid: %s\r\n",
+								  chan->name, chan->context, chan->exten, chan->priority, app, !ast_strlen_zero(appdata) ? appdata : "(NULL)", chan->uniqueid);
 				
 				res = pbx_exec(chan, a, appdata);
 			} else
Index: apps/app_meetme.c
===================================================================
--- apps/app_meetme.c	(revision 187672)
+++ apps/app_meetme.c	(working copy)
@@ -1816,7 +1816,7 @@
 	}
 	ast_log(LOG_DEBUG, "Placed channel %s in %s conf %d\n", chan->name, dahdi_chan_name, conf->zapconf);
 
-	if (!sent_event) {
+	if (!sent_event && chan->send_manager) {
 		manager_event(EVENT_FLAG_CALL, "MeetmeJoin", 
 			      "Channel: %s\r\n"
 			      "Uniqueid: %s\r\n"
@@ -1991,13 +1991,15 @@
 					break;
 				}
 
-				manager_event(EVENT_FLAG_CALL, "MeetmeMute", 
-						"Channel: %s\r\n"
-						"Uniqueid: %s\r\n"
-						"Meetme: %s\r\n"
-						"Usernum: %i\r\n"
-						"Status: on\r\n",
-						chan->name, chan->uniqueid, conf->confno, user->user_no);
+				if (chan->send_manager) {
+					manager_event(EVENT_FLAG_CALL, "MeetmeMute", 
+							"Channel: %s\r\n"
+							"Uniqueid: %s\r\n"
+							"Meetme: %s\r\n"
+							"Usernum: %i\r\n"
+							"Status: on\r\n",
+							chan->name, chan->uniqueid, conf->confno, user->user_no);
+				}
 			}
 
 			/* If I should be un-muted but am not talker, un-mute me */
@@ -2009,13 +2011,15 @@
 					break;
 				}
 
-				manager_event(EVENT_FLAG_CALL, "MeetmeMute", 
-						"Channel: %s\r\n"
-						"Uniqueid: %s\r\n"
-						"Meetme: %s\r\n"
-						"Usernum: %i\r\n"
-						"Status: off\r\n",
-						chan->name, chan->uniqueid, conf->confno, user->user_no);
+				if (chan->send_manager) {
+					manager_event(EVENT_FLAG_CALL, "MeetmeMute", 
+							"Channel: %s\r\n"
+							"Uniqueid: %s\r\n"
+							"Meetme: %s\r\n"
+							"Usernum: %i\r\n"
+							"Status: off\r\n",
+							chan->name, chan->uniqueid, conf->confno, user->user_no);
+				}
 			}
 
 			/* If I have been kicked, exit the conference */
@@ -2074,24 +2078,26 @@
 						if (!user->talking && totalsilence < MEETME_DELAYDETECTTALK) {
 							user->talking = 1;
 							if (confflags & CONFFLAG_MONITORTALKER)
-								manager_event(EVENT_FLAG_CALL, "MeetmeTalking",
-								      "Channel: %s\r\n"
-								      "Uniqueid: %s\r\n"
-								      "Meetme: %s\r\n"
-								      "Usernum: %d\r\n"
-								      "Status: on\r\n",
-								      chan->name, chan->uniqueid, conf->confno, user->user_no);
+								if (chan->send_manager)
+									manager_event(EVENT_FLAG_CALL, "MeetmeTalking",
+									      "Channel: %s\r\n"
+									      "Uniqueid: %s\r\n"
+									      "Meetme: %s\r\n"
+									      "Usernum: %d\r\n"
+									      "Status: on\r\n",
+									      chan->name, chan->uniqueid, conf->confno, user->user_no);
 						}
 						if (user->talking && totalsilence > MEETME_DELAYDETECTENDTALK) {
 							user->talking = 0;
 							if (confflags & CONFFLAG_MONITORTALKER)
-								manager_event(EVENT_FLAG_CALL, "MeetmeTalking",
-								      "Channel: %s\r\n"
-								      "Uniqueid: %s\r\n"
-								      "Meetme: %s\r\n"
-								      "Usernum: %d\r\n"
-								      "Status: off\r\n",
-								      chan->name, chan->uniqueid, conf->confno, user->user_no);
+								if (chan->send_manager)
+									manager_event(EVENT_FLAG_CALL, "MeetmeTalking",
+									      "Channel: %s\r\n"
+									      "Uniqueid: %s\r\n"
+									      "Meetme: %s\r\n"
+									      "Usernum: %d\r\n"
+									      "Status: off\r\n",
+									      chan->name, chan->uniqueid, conf->confno, user->user_no);
 						}
 					}
 					if (using_pseudo) {
@@ -2412,7 +2418,7 @@
 		min = ((now - user->jointime) % 3600) / 60;
 		sec = (now - user->jointime) % 60;
 
-		if (sent_event) {
+		if (sent_event && chan->send_manager) {
 			manager_event(EVENT_FLAG_CALL, "MeetmeLeave",
 				      "Channel: %s\r\n"
 				      "Uniqueid: %s\r\n"
Index: apps/app_dial.c
===================================================================
--- apps/app_dial.c	(revision 187672)
+++ apps/app_dial.c	(working copy)
@@ -394,17 +394,19 @@
 
 static void senddialevent(struct ast_channel *src, struct ast_channel *dst)
 {
-	/* XXX do we need also CallerIDnum ? */
-	manager_event(EVENT_FLAG_CALL, "Dial", 
-			   "Source: %s\r\n"
-			   "Destination: %s\r\n"
-			   "CallerID: %s\r\n"
-			   "CallerIDName: %s\r\n"
-			   "SrcUniqueID: %s\r\n"
-			   "DestUniqueID: %s\r\n",
-			   src->name, dst->name, S_OR(src->cid.cid_num, "<unknown>"),
-			   S_OR(src->cid.cid_name, "<unknown>"), src->uniqueid,
-			   dst->uniqueid);
+ 	if (src->send_manager) {
+		/* XXX do we need also CallerIDnum ? */
+		manager_event(EVENT_FLAG_CALL, "Dial", 
+				   "Source: %s\r\n"
+				   "Destination: %s\r\n"
+				   "CallerID: %s\r\n"
+				   "CallerIDName: %s\r\n"
+				   "SrcUniqueID: %s\r\n"
+				   "DestUniqueID: %s\r\n",
+				   src->name, dst->name, S_OR(src->cid.cid_num, "<unknown>"),
+				   S_OR(src->cid.cid_name, "<unknown>"), src->uniqueid,
+				   dst->uniqueid);
+	}   
 }
 
 static struct ast_channel *wait_for_answer(struct ast_channel *in, struct dial_localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, char *status, size_t statussize, int busystart, int nochanstart, int congestionstart, int priority_jump, int *result)
@@ -1284,7 +1286,9 @@
 		tmp->chan->adsicpe = chan->adsicpe;
 		/* Pass the transfer capability */
 		tmp->chan->transfercapability = chan->transfercapability;
-
+		/* Pass send_manager setting */
+		tmp->chan->send_manager = chan->send_manager;
+	   
 		/* If we have an outbound group, set this peer channel to it */
 		if (outbound_group)
 			ast_app_group_set_channel(tmp->chan, outbound_group);
Index: apps/app_userevent.c
===================================================================
--- apps/app_userevent.c	(revision 187672)
+++ apps/app_userevent.c	(working copy)
@@ -88,7 +88,8 @@
 		buflen += 2;
 	}
 
-	manager_event(EVENT_FLAG_USER, "UserEvent", "UserEvent: %s\r\n%s", args.eventname, buf);
+	if (chan->send_manager) 
+		manager_event(EVENT_FLAG_USER, "UserEvent", "UserEvent: %s\r\n%s", args.eventname, buf);
 
 	ast_module_user_remove(u);
 
Index: apps/app_queue.c
===================================================================
--- apps/app_queue.c	(revision 187672)
+++ apps/app_queue.c	(working copy)
@@ -1467,12 +1467,13 @@
 		ast_copy_string(qe->context, q->context, sizeof(qe->context));
 		q->count++;
 		res = 0;
-		manager_event(EVENT_FLAG_CALL, "Join",
-			"Channel: %s\r\nCallerID: %s\r\nCallerIDName: %s\r\nQueue: %s\r\nPosition: %d\r\nCount: %d\r\nUniqueid: %s\r\n",
-			qe->chan->name,
-			S_OR(qe->chan->cid.cid_num, "unknown"), /* XXX somewhere else it is <unknown> */
-			S_OR(qe->chan->cid.cid_name, "unknown"),
-			q->name, qe->pos, q->count, qe->chan->uniqueid );
+		if (qe->chan->send_manager)   
+			manager_event(EVENT_FLAG_CALL, "Join",
+				"Channel: %s\r\nCallerID: %s\r\nCallerIDName: %s\r\nQueue: %s\r\nPosition: %d\r\nCount: %d\r\nUniqueid: %s\r\n",
+				qe->chan->name,
+				S_OR(qe->chan->cid.cid_num, "unknown"), /* XXX somewhere else it is <unknown> */
+				S_OR(qe->chan->cid.cid_name, "unknown"),
+				q->name, qe->pos, q->count, qe->chan->uniqueid );
 		if (option_debug)
 			ast_log(LOG_DEBUG, "Queue '%s' Join, Channel '%s', Position '%d'\n", q->name, qe->chan->name, qe->pos );
 	}
@@ -1673,9 +1674,10 @@
 			q->count--;
 
 			/* Take us out of the queue */
-			manager_event(EVENT_FLAG_CALL, "Leave",
-				"Channel: %s\r\nQueue: %s\r\nCount: %d\r\nUniqueid: %s\r\n",
-				qe->chan->name, q->name,  q->count, qe->chan->uniqueid);
+			if (qe->chan->send_manager)		   
+				manager_event(EVENT_FLAG_CALL, "Leave",
+					"Channel: %s\r\nQueue: %s\r\nCount: %d\r\nUniqueid: %s\r\n",
+					qe->chan->name, q->name,  q->count, qe->chan->uniqueid);
 			if (option_debug)
 				ast_log(LOG_DEBUG, "Queue '%s' Leave, Channel '%s'\n", q->name, qe->chan->name );
 			/* Take us out of the queue */
@@ -1912,21 +1914,22 @@
 	} else if (qe->parent->eventwhencalled) {
 		char vars[2048];
 
-		manager_event(EVENT_FLAG_AGENT, "AgentCalled",
-					"AgentCalled: %s\r\n"
-					"AgentName: %s\r\n"
-					"ChannelCalling: %s\r\n"
-					"CallerID: %s\r\n"
-					"CallerIDName: %s\r\n"
-					"Context: %s\r\n"
-					"Extension: %s\r\n"
-					"Priority: %d\r\n"
-					"%s",
-					tmp->interface, tmp->member->membername, qe->chan->name,
-					tmp->chan->cid.cid_num ? tmp->chan->cid.cid_num : "unknown",
-					tmp->chan->cid.cid_name ? tmp->chan->cid.cid_name : "unknown",
-					qe->chan->context, qe->chan->exten, qe->chan->priority,
-					qe->parent->eventwhencalled == QUEUE_EVENT_VARIABLES ? vars2manager(qe->chan, vars, sizeof(vars)) : "");
+		if (qe->chan->send_manager)	   
+			manager_event(EVENT_FLAG_AGENT, "AgentCalled",
+						"AgentCalled: %s\r\n"
+						"AgentName: %s\r\n"
+						"ChannelCalling: %s\r\n"
+						"CallerID: %s\r\n"
+						"CallerIDName: %s\r\n"
+						"Context: %s\r\n"
+						"Extension: %s\r\n"
+						"Priority: %d\r\n"
+						"%s",
+						tmp->interface, tmp->member->membername, qe->chan->name,
+						tmp->chan->cid.cid_num ? tmp->chan->cid.cid_num : "unknown",
+						tmp->chan->cid.cid_name ? tmp->chan->cid.cid_name : "unknown",
+						qe->chan->context, qe->chan->exten, qe->chan->priority,
+						qe->parent->eventwhencalled == QUEUE_EVENT_VARIABLES ? vars2manager(qe->chan, vars, sizeof(vars)) : "");
 		if (option_verbose > 2)
 			ast_verbose(VERBOSE_PREFIX_3 "Called %s\n", tmp->interface);
 	}
@@ -2060,13 +2063,14 @@
 static void record_abandoned(struct queue_ent *qe)
 {
 	ast_mutex_lock(&qe->parent->lock);
-	manager_event(EVENT_FLAG_AGENT, "QueueCallerAbandon",
-		"Queue: %s\r\n"
-		"Uniqueid: %s\r\n"
-		"Position: %d\r\n"
-		"OriginalPosition: %d\r\n"
-		"HoldTime: %d\r\n",
-		qe->parent->name, qe->chan->uniqueid, qe->pos, qe->opos, (int)(time(NULL) - qe->start));
+	if (qe->chan->send_manager)   
+		manager_event(EVENT_FLAG_AGENT, "QueueCallerAbandon",
+			"Queue: %s\r\n"
+			"Uniqueid: %s\r\n"
+			"Position: %d\r\n"
+			"OriginalPosition: %d\r\n"
+			"HoldTime: %d\r\n",
+			qe->parent->name, qe->chan->uniqueid, qe->pos, qe->opos, (int)(time(NULL) - qe->start));
 
 	qe->parent->callsabandoned++;
 	ast_mutex_unlock(&qe->parent->lock);
@@ -2986,7 +2990,7 @@
 				/* Agent must have hung up */
 				ast_log(LOG_WARNING, "Agent on %s hungup on the customer.\n", peer->name);
 				ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "AGENTDUMP", "%s", "");
-				if (qe->parent->eventwhencalled)
+				if (qe->parent->eventwhencalled && qe->chan->send_manager)
 					manager_event(EVENT_FLAG_AGENT, "AgentDump",
 							"Queue: %s\r\n"
 							"Uniqueid: %s\r\n"
@@ -3141,7 +3145,7 @@
 		}
 		qe->handled++;
 		ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "CONNECT", "%ld|%s", (long)time(NULL) - qe->start, peer->uniqueid);
-		if (qe->parent->eventwhencalled)
+		if (qe->parent->eventwhencalled && qe->chan->send_manager)
 			manager_event(EVENT_FLAG_AGENT, "AgentConnect",
 					"Queue: %s\r\n"
 					"Uniqueid: %s\r\n"
@@ -3174,7 +3178,7 @@
 			} else if (qe->chan->_softhangup) {
 				ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "COMPLETECALLER", "%ld|%ld|%d",
 					(long) (callstart - qe->start), (long) (time(NULL) - callstart), qe->opos);
-				if (qe->parent->eventwhencalled)
+				if (qe->parent->eventwhencalled && qe->chan->send_manager)
 					manager_event(EVENT_FLAG_AGENT, "AgentComplete",
 							"Queue: %s\r\n"
 							"Uniqueid: %s\r\n"
@@ -3191,7 +3195,7 @@
 			} else {
 				ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "COMPLETEAGENT", "%ld|%ld|%d",
 					(long) (callstart - qe->start), (long) (time(NULL) - callstart), qe->opos);
-				if (qe->parent->eventwhencalled)
+				if (qe->parent->eventwhencalled && qe->chan->send_manager)
 					manager_event(EVENT_FLAG_AGENT, "AgentComplete",
 							"Queue: %s\r\n"
 							"Uniqueid: %s\r\n"
Index: include/asterisk/channel.h
===================================================================
--- include/asterisk/channel.h	(revision 187672)
+++ include/asterisk/channel.h	(working copy)
@@ -458,7 +458,8 @@
 	struct timeval dtmf_tv;       /*!< The time that an in process digit began, or the last digit ended */
 
 	int visible_indication;                         /*!< Indication currently playing on the channel */
-
+	int send_manager;                                /*!< Enable/Disable Manager Event on the channel */
+   
 	/*! \brief Data stores on the channel */
 	AST_LIST_HEAD_NOLOCK(datastores, ast_datastore) datastores;
 };
Index: main/channel.c
===================================================================
--- main/channel.c	(revision 187672)
+++ main/channel.c	(working copy)
@@ -852,7 +852,8 @@
 		strcpy(tmp->exten, "s");
 
 	tmp->priority = 1;
-		
+        tmp->send_manager = 1;
+
 	tmp->cdr = ast_cdr_alloc();
 	ast_cdr_init(tmp->cdr, tmp);
 	ast_cdr_start(tmp->cdr);
@@ -878,7 +879,7 @@
 	 * proper and correct place to make this call, but you sure do have to pass
 	 * a lot of data into this func to do it here!
 	 */
-	if (!ast_strlen_zero(name_fmt)) {
+	if (!ast_strlen_zero(name_fmt) && tmp->send_manager) {
 		manager_event(EVENT_FLAG_CALL, "Newchannel",
 		      "Channel: %s\r\n"
 		      "State: %s\r\n"
@@ -1526,16 +1527,18 @@
 	}
 			
 	ast_channel_unlock(chan);
-	manager_event(EVENT_FLAG_CALL, "Hangup",
-			"Channel: %s\r\n"
-			"Uniqueid: %s\r\n"
-			"Cause: %d\r\n"
-			"Cause-txt: %s\r\n",
-			chan->name,
-			chan->uniqueid,
-			chan->hangupcause,
-			ast_cause2str(chan->hangupcause)
-			);
+   
+	if (chan->send_manager)
+		manager_event(EVENT_FLAG_CALL, "Hangup",
+				"Channel: %s\r\n"
+				"Uniqueid: %s\r\n"
+				"Cause: %d\r\n"
+				"Cause-txt: %s\r\n",
+				chan->name,
+				chan->uniqueid,
+				chan->hangupcause,
+				ast_cause2str(chan->hangupcause)
+				);
 
 	if (chan->cdr && !ast_test_flag(chan->cdr, AST_CDR_FLAG_BRIDGED) && 
 		!ast_test_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED) && 
@@ -3442,7 +3445,8 @@
 
 void ast_change_name(struct ast_channel *chan, char *newname)
 {
-	manager_event(EVENT_FLAG_CALL, "Rename", "Oldname: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", chan->name, newname, chan->uniqueid);
+	if (chan->send_manager)   
+		manager_event(EVENT_FLAG_CALL, "Rename", "Oldname: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", chan->name, newname, chan->uniqueid);
 	ast_string_field_set(chan, name, newname);
 }
 
@@ -3577,9 +3581,11 @@
 	ast_string_field_set(clone, name, masqn);
 	
 	/* Notify any managers of the change, first the masq then the other */
-	manager_event(EVENT_FLAG_CALL, "Rename", "Oldname: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", newn, masqn, clone->uniqueid);
-	manager_event(EVENT_FLAG_CALL, "Rename", "Oldname: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", orig, newn, original->uniqueid);
-
+	if (original->send_manager) {   	
+		manager_event(EVENT_FLAG_CALL, "Rename", "Oldname: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", newn, masqn, clone->uniqueid);
+		manager_event(EVENT_FLAG_CALL, "Rename", "Oldname: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", orig, newn, original->uniqueid);
+	}
+      
 	/* Swap the technologies */	
 	t = original->tech;
 	original->tech = clone->tech;
@@ -3667,7 +3673,8 @@
 	snprintf(zombn, sizeof(zombn), "%s<ZOMBIE>", orig);
 	/* Mangle the name of the clone channel */
 	ast_string_field_set(clone, name, zombn);
-	manager_event(EVENT_FLAG_CALL, "Rename", "Oldname: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", masqn, zombn, clone->uniqueid);
+	if (clone->send_manager)   
+		manager_event(EVENT_FLAG_CALL, "Rename", "Oldname: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", masqn, zombn, clone->uniqueid);
 
 	/* Update the type. */
 	t_pvt = original->monitor;
@@ -3767,16 +3774,17 @@
 		if (option_debug)
 			ast_log(LOG_DEBUG, "Destroying channel clone '%s'\n", clone->name);
 		ast_channel_unlock(clone);
-		manager_event(EVENT_FLAG_CALL, "Hangup",
-			"Channel: %s\r\n"
-			"Uniqueid: %s\r\n"
-			"Cause: %d\r\n"
-			"Cause-txt: %s\r\n",
-			clone->name,
-			clone->uniqueid,
-			clone->hangupcause,
-			ast_cause2str(clone->hangupcause)
-			);
+	   	if (clone->send_manager) 
+			manager_event(EVENT_FLAG_CALL, "Hangup",
+				"Channel: %s\r\n"
+				"Uniqueid: %s\r\n"
+				"Cause: %d\r\n"
+				"Cause-txt: %s\r\n",
+				clone->name,
+				clone->uniqueid,
+				clone->hangupcause,
+				ast_cause2str(clone->hangupcause)
+				);
 		ast_channel_free(clone);
 	} else {
 		if (option_debug)
@@ -3813,19 +3821,20 @@
 			free(chan->cid.cid_ani);
 		chan->cid.cid_ani = ast_strdup(ani);
 	}
-	manager_event(EVENT_FLAG_CALL, "Newcallerid",
-				"Channel: %s\r\n"
-				"CallerID: %s\r\n"
-				"CallerIDName: %s\r\n"
-				"Uniqueid: %s\r\n"
-				"CID-CallingPres: %d (%s)\r\n",
-				chan->name,
-				S_OR(chan->cid.cid_num, "<Unknown>"),
-				S_OR(chan->cid.cid_name, "<Unknown>"),
-				chan->uniqueid,
-				chan->cid.cid_pres,
-				ast_describe_caller_presentation(chan->cid.cid_pres)
-				);
+	if (chan->send_manager)   
+		manager_event(EVENT_FLAG_CALL, "Newcallerid",
+					"Channel: %s\r\n"
+					"CallerID: %s\r\n"
+					"CallerIDName: %s\r\n"
+					"Uniqueid: %s\r\n"
+					"CID-CallingPres: %d (%s)\r\n",
+					chan->name,
+					S_OR(chan->cid.cid_num, "<Unknown>"),
+					S_OR(chan->cid.cid_name, "<Unknown>"),
+					chan->uniqueid,
+					chan->cid.cid_pres,
+					ast_describe_caller_presentation(chan->cid.cid_pres)
+					);
 	
 	ast_channel_unlock(chan);
 }
@@ -3846,17 +3855,19 @@
 	chan->_state = state;
 	ast_device_state_changed_literal(name);
 	/* setstate used to conditionally report Newchannel; this is no more */
-	manager_event(EVENT_FLAG_CALL,
-		      "Newstate",
-		      "Channel: %s\r\n"
-		      "State: %s\r\n"
-		      "CallerID: %s\r\n"
-		      "CallerIDName: %s\r\n"
-		      "Uniqueid: %s\r\n",
-		      chan->name, ast_state2str(chan->_state),
-		      S_OR(chan->cid.cid_num, "<unknown>"),
-		      S_OR(chan->cid.cid_name, "<unknown>"),
-		      chan->uniqueid);
+   
+	if (chan->send_manager)   
+		manager_event(EVENT_FLAG_CALL,
+			      "Newstate",
+			      "Channel: %s\r\n"
+			      "State: %s\r\n"
+			      "CallerID: %s\r\n"
+			      "CallerIDName: %s\r\n"
+			      "Uniqueid: %s\r\n",
+			      chan->name, ast_state2str(chan->_state),
+			      S_OR(chan->cid.cid_num, "<unknown>"),
+			      S_OR(chan->cid.cid_name, "<unknown>"),
+			      chan->uniqueid);
 
 	return 0;
 }
@@ -4113,14 +4124,15 @@
 	c1->_bridge = c0;
 
 	/* \todo  XXX here should check that cid_num is not NULL */
-	manager_event(EVENT_FLAG_CALL, "Link",
-		      "Channel1: %s\r\n"
-		      "Channel2: %s\r\n"
-		      "Uniqueid1: %s\r\n"
-		      "Uniqueid2: %s\r\n"
-		      "CallerID1: %s\r\n"
-		      "CallerID2: %s\r\n",
-		      c0->name, c1->name, c0->uniqueid, c1->uniqueid, c0->cid.cid_num, c1->cid.cid_num);
+	if (c0->send_manager)   
+		manager_event(EVENT_FLAG_CALL, "Link",
+			      "Channel1: %s\r\n"
+			      "Channel2: %s\r\n"
+			      "Uniqueid1: %s\r\n"
+			      "Uniqueid2: %s\r\n"
+			      "CallerID1: %s\r\n"
+			      "CallerID2: %s\r\n",
+			      c0->name, c1->name, c0->uniqueid, c1->uniqueid, c0->cid.cid_num, c1->cid.cid_num);
 
 	o0nativeformats = c0->nativeformats;
 	o1nativeformats = c1->nativeformats;
@@ -4240,14 +4252,15 @@
 			ast_set_flag(c1, AST_FLAG_NBRIDGE);
 			if ((res = c0->tech->bridge(c0, c1, config->flags, fo, rc, to)) == AST_BRIDGE_COMPLETE) {
 				/* \todo  XXX here should check that cid_num is not NULL */
-				manager_event(EVENT_FLAG_CALL, "Unlink",
-					      "Channel1: %s\r\n"
-					      "Channel2: %s\r\n"
-					      "Uniqueid1: %s\r\n"
-					      "Uniqueid2: %s\r\n"
-					      "CallerID1: %s\r\n"
-					      "CallerID2: %s\r\n",
-					      c0->name, c1->name, c0->uniqueid, c1->uniqueid, c0->cid.cid_num, c1->cid.cid_num);
+				if (c0->send_manager)			   
+					manager_event(EVENT_FLAG_CALL, "Unlink",
+						      "Channel1: %s\r\n"
+						      "Channel2: %s\r\n"
+						      "Uniqueid1: %s\r\n"
+						      "Uniqueid2: %s\r\n"
+						      "CallerID1: %s\r\n"
+						      "CallerID2: %s\r\n",
+						      c0->name, c1->name, c0->uniqueid, c1->uniqueid, c0->cid.cid_num, c1->cid.cid_num);
 				if (option_debug)
 					ast_log(LOG_DEBUG, "Returning from native bridge, channels: %s, %s\n", c0->name, c1->name);
 
@@ -4285,14 +4298,15 @@
 			if (ast_channel_make_compatible(c0, c1)) {
 				ast_log(LOG_WARNING, "Can't make %s and %s compatible\n", c0->name, c1->name);
 				/* \todo  XXX here should check that cid_num is not NULL */
-                                manager_event(EVENT_FLAG_CALL, "Unlink",
-					      "Channel1: %s\r\n"
-					      "Channel2: %s\r\n"
-					      "Uniqueid1: %s\r\n"
-					      "Uniqueid2: %s\r\n"
-					      "CallerID1: %s\r\n"
-					      "CallerID2: %s\r\n",
-					      c0->name, c1->name, c0->uniqueid, c1->uniqueid, c0->cid.cid_num, c1->cid.cid_num);
+				if (c0->send_manager)			   
+	                                manager_event(EVENT_FLAG_CALL, "Unlink",
+						      "Channel1: %s\r\n"
+						      "Channel2: %s\r\n"
+						      "Uniqueid1: %s\r\n"
+						      "Uniqueid2: %s\r\n"
+						      "CallerID1: %s\r\n"
+						      "CallerID2: %s\r\n",
+						      c0->name, c1->name, c0->uniqueid, c1->uniqueid, c0->cid.cid_num, c1->cid.cid_num);
 				return AST_BRIDGE_FAILED;
 			}
 			o0nativeformats = c0->nativeformats;
@@ -4324,14 +4338,15 @@
 	c1->_bridge = NULL;
 
 	/* \todo  XXX here should check that cid_num is not NULL */
-	manager_event(EVENT_FLAG_CALL, "Unlink",
-		      "Channel1: %s\r\n"
-		      "Channel2: %s\r\n"
-		      "Uniqueid1: %s\r\n"
-		      "Uniqueid2: %s\r\n"
-		      "CallerID1: %s\r\n"
-		      "CallerID2: %s\r\n",
-		      c0->name, c1->name, c0->uniqueid, c1->uniqueid, c0->cid.cid_num, c1->cid.cid_num);
+	if (c0->send_manager)   
+		manager_event(EVENT_FLAG_CALL, "Unlink",
+			      "Channel1: %s\r\n"
+			      "Channel2: %s\r\n"
+			      "Uniqueid1: %s\r\n"
+			      "Uniqueid2: %s\r\n"
+			      "CallerID1: %s\r\n"
+			      "CallerID2: %s\r\n",
+			      c0->name, c1->name, c0->uniqueid, c1->uniqueid, c0->cid.cid_num, c1->cid.cid_num);
 	if (option_debug)
 		ast_log(LOG_DEBUG, "Bridge stops bridging channels %s and %s\n", c0->name, c1->name);
 
Index: main/dial.c
===================================================================
--- main/dial.c	(revision 187672)
+++ main/dial.c	(working copy)
@@ -273,7 +273,9 @@
 			channel->owner->cid.cid_ton = chan->cid.cid_ton;
 			channel->owner->cid.cid_tns = chan->cid.cid_tns;
 			channel->owner->adsicpe = chan->adsicpe;
-			channel->owner->transfercapability = chan->transfercapability;
+ 			channel->owner->transfercapability = chan->transfercapability;
+			channel->owner->send_manager = chan->send_manager;
+		   
 		}
 
 		/* Actually call the device */
Index: main/pbx.c
===================================================================
--- main/pbx.c	(revision 187672)
+++ main/pbx.c	(working copy)
@@ -1851,15 +1851,18 @@
 					term_color(tmp3, passdata, COLOR_BRMAGENTA, 0, sizeof(tmp3)),
 					"in new stack");
 			}
-			manager_event(EVENT_FLAG_CALL, "Newexten",
-					"Channel: %s\r\n"
-					"Context: %s\r\n"
-					"Extension: %s\r\n"
-					"Priority: %d\r\n"
-					"Application: %s\r\n"
-					"AppData: %s\r\n"
-					"Uniqueid: %s\r\n",
-					c->name, c->context, c->exten, c->priority, app->name, passdata, c->uniqueid);
+		   
+			if (c->send_manager)
+				manager_event(EVENT_FLAG_CALL, "Newexten",
+						"Channel: %s\r\n"
+						"Context: %s\r\n"
+						"Extension: %s\r\n"
+						"Priority: %d\r\n"
+						"Application: %s\r\n"
+						"AppData: %s\r\n"
+						"Uniqueid: %s\r\n",
+						c->name, c->context, c->exten, c->priority, app->name, passdata, c->uniqueid);
+		   
 			return pbx_exec(c, app, passdata);	/* 0 on success, -1 on failure */
 		}
 	} else if (q.swo) {	/* not found here, but in another switch */
Index: res/res_features.c
===================================================================
--- res/res_features.c	(revision 187672)
+++ res/res_features.c	(working copy)
@@ -494,18 +494,19 @@
 		event_from = pbx_builtin_getvar_helper(chan, "BLINDTRANSFER");
 	}
 
-	manager_event(EVENT_FLAG_CALL, "ParkedCall",
-		"Exten: %s\r\n"
-		"Channel: %s\r\n"
-		"From: %s\r\n"
-		"Timeout: %ld\r\n"
-		"CallerID: %s\r\n"
-		"CallerIDName: %s\r\n",
-		pu->parkingexten, pu->chan->name, event_from ? event_from : "",
-		(long)pu->start.tv_sec + (long)(pu->parkingtime/1000) - (long)time(NULL),
-		S_OR(pu->chan->cid.cid_num, "<unknown>"),
-		S_OR(pu->chan->cid.cid_name, "<unknown>")
-		);
+	if (pu->chan->send_manager)   
+		manager_event(EVENT_FLAG_CALL, "ParkedCall",
+			"Exten: %s\r\n"
+			"Channel: %s\r\n"
+			"From: %s\r\n"
+			"Timeout: %ld\r\n"
+			"CallerID: %s\r\n"
+			"CallerIDName: %s\r\n",
+			pu->parkingexten, pu->chan->name, event_from ? event_from : "",
+			(long)pu->start.tv_sec + (long)(pu->parkingtime/1000) - (long)time(NULL),
+			S_OR(pu->chan->cid.cid_num, "<unknown>"),
+			S_OR(pu->chan->cid.cid_name, "<unknown>")
+			);
 
 	if (peer && adsipark && ast_adsi_available(peer)) {
 		adsi_announce_park(peer, pu->parkingexten);	/* Only supports parking numbers */
@@ -2070,16 +2071,17 @@
 
 static void post_manager_event(const char *s, char *parkingexten, struct ast_channel *chan)
 {
-	manager_event(EVENT_FLAG_CALL, s,
-		"Exten: %s\r\n"
-		"Channel: %s\r\n"
-		"CallerID: %s\r\n"
-		"CallerIDName: %s\r\n\r\n",
-		parkingexten, 
-		chan->name,
-		S_OR(chan->cid.cid_num, "<unknown>"),
-		S_OR(chan->cid.cid_name, "<unknown>")
-		);
+	if (chan->send_manager)   
+		manager_event(EVENT_FLAG_CALL, s,
+			"Exten: %s\r\n"
+			"Channel: %s\r\n"
+			"CallerID: %s\r\n"
+			"CallerIDName: %s\r\n\r\n",
+			parkingexten, 
+			chan->name,
+			S_OR(chan->cid.cid_num, "<unknown>"),
+			S_OR(chan->cid.cid_name, "<unknown>")
+			);
 }
 
 static char *callback_dialoptions(struct ast_flags *features_callee, struct ast_flags *features_caller, char *options, size_t len)
@@ -2413,16 +2415,17 @@
 		} else
 			ast_log(LOG_WARNING, "Whoa, no parking context?\n");
 
-		manager_event(EVENT_FLAG_CALL, "UnParkedCall",
-			"Exten: %s\r\n"
-			"Channel: %s\r\n"
-			"From: %s\r\n"
-			"CallerID: %s\r\n"
-			"CallerIDName: %s\r\n",
-			pu->parkingexten, pu->chan->name, chan->name,
-			S_OR(pu->chan->cid.cid_num, "<unknown>"),
-			S_OR(pu->chan->cid.cid_name, "<unknown>")
-			);
+		if (pu->chan->send_manager)	   
+			manager_event(EVENT_FLAG_CALL, "UnParkedCall",
+				"Exten: %s\r\n"
+				"Channel: %s\r\n"
+				"From: %s\r\n"
+				"CallerID: %s\r\n"
+				"CallerIDName: %s\r\n",
+				pu->parkingexten, pu->chan->name, chan->name,
+				S_OR(pu->chan->cid.cid_num, "<unknown>"),
+				S_OR(pu->chan->cid.cid_name, "<unknown>")
+				);
 
 		free(pu);
 	}
