[asterisk-commits] russell: branch russell/ast_channel_ao2 r183634 - in /team/russell/ast_channe...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sat Mar 21 12:10:42 CDT 2009


Author: russell
Date: Sat Mar 21 12:10:39 2009
New Revision: 183634

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=183634
Log:
fix up name handling in do_masq()

Modified:
    team/russell/ast_channel_ao2/include/asterisk/channel.h
    team/russell/ast_channel_ao2/main/channel.c

Modified: team/russell/ast_channel_ao2/include/asterisk/channel.h
URL: http://svn.digium.com/svn-view/asterisk/team/russell/ast_channel_ao2/include/asterisk/channel.h?view=diff&rev=183634&r1=183633&r2=183634
==============================================================================
--- team/russell/ast_channel_ao2/include/asterisk/channel.h (original)
+++ team/russell/ast_channel_ao2/include/asterisk/channel.h Sat Mar 21 12:10:39 2009
@@ -847,9 +847,14 @@
 /*!
  * \brief Change channel name
  *
- * \note The channel must be locked before calling this function.
- */
-void ast_change_name(struct ast_channel *chan, char *newname);
+ * \pre The channel must be locked before calling this function.
+ *
+ * \param chan the channel to change the name of
+ * \param newname the name to change to
+ *
+ * \return nothing
+ */
+void ast_change_name(struct ast_channel *chan, const char *newname);
 
 /*!
  * \brief Unlink and release reference to a channel
@@ -1591,12 +1596,12 @@
  * \note This function does _not_ return a reference to the bridged channel.
  * The reason for this is mostly historical.  It _should_ return a reference,
  * but it will take a lot of work to make the code base account for that.
- * So, for the now, the old rules still apply for how to handle this function.
+ * So, for now, the old rules still apply for how to handle this function.
  * If this function is being used from the channel thread that owns the channel,
  * then a reference is already held, and channel locking is not required to
  * guarantee that the channel will stay around.  If this function is used
  * outside of the associated channel thread, the channel parameter 'chan'
- * MUST be locked before calling this function.  Also, 'chan' must reamain locked
+ * MUST be locked before calling this function.  Also, 'chan' must remain locked
  * for the entire time that the result of this function is being used.
  *
  * \param chan Current channel

Modified: team/russell/ast_channel_ao2/main/channel.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/ast_channel_ao2/main/channel.c?view=diff&rev=183634&r1=183633&r2=183634
==============================================================================
--- team/russell/ast_channel_ao2/main/channel.c (original)
+++ team/russell/ast_channel_ao2/main/channel.c Sat Mar 21 12:10:39 2009
@@ -3979,7 +3979,7 @@
 	return res;
 }
 
-void ast_change_name(struct ast_channel *chan, char *newname)
+void ast_change_name(struct ast_channel *chan, const char *newname)
 {
 	/* We must re-link, as the hash value will change here. */
 	ao2_unlink(channels, chan);
@@ -4100,27 +4100,22 @@
 	free_translation(clonechan);
 	free_translation(original);
 
-
 	/* Unlink the masquerade */
 	original->masq = NULL;
 	clonechan->masqr = NULL;
-	
+
 	/* Save the original name */
 	ast_copy_string(orig, original->name, sizeof(orig));
 	/* Save the new name */
 	ast_copy_string(newn, clonechan->name, sizeof(newn));
 	/* Create the masq name */
 	snprintf(masqn, sizeof(masqn), "%s<MASQ>", newn);
-		
+
 	/* Copy the name from the clone channel */
-	ast_string_field_set(original, name, newn);
+	ast_change_name(original, newn);
 
 	/* Mangle the name of the clone channel */
-	ast_string_field_set(clonechan, name, masqn);
-	
-	/* Notify any managers of the change, first the masq then the other */
-	manager_event(EVENT_FLAG_CALL, "Rename", "Channel: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", newn, masqn, clonechan->uniqueid);
-	manager_event(EVENT_FLAG_CALL, "Rename", "Channel: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", orig, newn, original->uniqueid);
+	ast_change_name(clonechan, masqn);
 
 	/* Swap the technologies */	
 	t = original->tech;
@@ -4206,10 +4201,9 @@
 		return -1;
 	}
 
+	/* Mangle the name of the clone channel */
 	snprintf(zombn, sizeof(zombn), "%s<ZOMBIE>", orig);
-	/* Mangle the name of the clone channel */
-	ast_string_field_set(clonechan, name, zombn);
-	manager_event(EVENT_FLAG_CALL, "Rename", "Channel: %s\r\nNewname: %s\r\nUniqueid: %s\r\n", masqn, zombn, clonechan->uniqueid);
+	ast_change_name(clonechan, zombn);
 
 	/* Update the type. */
 	t_pvt = original->monitor;
@@ -4303,7 +4297,7 @@
 	if (original->visible_indication) {
 		ast_indicate(original, original->visible_indication);
 	}
-	
+
 	/* Now, at this point, the "clone" channel is totally F'd up.  We mark it as
 	   a zombie so nothing tries to touch it.  If it's already been marked as a
 	   zombie, then free it now (since it already is considered invalid). */




More information about the asterisk-commits mailing list