[asterisk-commits] bebuild: tag 10.4.2 r367964 - in /tags/10.4.2: ./ apps/ channels/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed May 30 09:22:58 CDT 2012


Author: bebuild
Date: Wed May 30 09:22:53 2012
New Revision: 367964

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=367964
Log:
Merge r367267,367562 for 10.4.2

Removed:
    tags/10.4.2/asterisk-10.4.1-summary.html
    tags/10.4.2/asterisk-10.4.1-summary.txt
Modified:
    tags/10.4.2/   (props changed)
    tags/10.4.2/.version
    tags/10.4.2/ChangeLog
    tags/10.4.2/apps/app_confbridge.c
    tags/10.4.2/channels/chan_sip.c

Propchange: tags/10.4.2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 30 09:22:53 2012
@@ -1,1 +1,1 @@
-/branches/10:363103-363104,363107,363156,364707,367782,367844
+/branches/10:363103-363104,363107,363156,364707,367267,367562,367782,367844

Modified: tags/10.4.2/.version
URL: http://svnview.digium.com/svn/asterisk/tags/10.4.2/.version?view=diff&rev=367964&r1=367963&r2=367964
==============================================================================
--- tags/10.4.2/.version (original)
+++ tags/10.4.2/.version Wed May 30 09:22:53 2012
@@ -1,1 +1,1 @@
-10.4.1
+10.4.2

Modified: tags/10.4.2/ChangeLog
URL: http://svnview.digium.com/svn/asterisk/tags/10.4.2/ChangeLog?view=diff&rev=367964&r1=367963&r2=367964
==============================================================================
--- tags/10.4.2/ChangeLog (original)
+++ tags/10.4.2/ChangeLog Wed May 30 09:22:53 2012
@@ -1,3 +1,43 @@
+2012-05-30  Asterisk Development Team <asteriskteam at digium.com>
+
+	* Asterisk 10.4.2 Released.
+
+	* Resolve crash in subscribing for MWI notifications.
+
+	  ASTOBJ_UNREF sets the variable to NULL after unreffing it, so the
+	  variable shoudl definitely not be used after that. To solve this in
+	  the two cases that affect subscribing for MWI notifications, we
+	  instead save the ref locally, and unref them in the error
+	  conditions.
+	  
+	  (closes issue ASTERISK-19827)
+	  Reported by: B. R.
+	  Review: https://reviewboard.asterisk.org/r/1940/
+
+	* Fix crash in ConfBridge when user announcement is played for more
+	  than 2 users
+
+	  A patch introduced in r354938 made it so that ConfBridge would not
+	  attempt to play sound files if those files did not exist.
+	  Unfortunately, ConfBridge uses the same underlying fucntion,
+	  play_sound_helper, to playback both the sound files and numbers to
+	  callers. When a number is being played back, the name of the sound
+	  file is expected to be NULL. This NULL value was passed into a
+	  function that tested for the existance of a sound file and is not
+	  tolerant to NULL file names, causing a crash.
+
+	  This patch fixes the behavior, such that if a sound file does not
+	  exist we do not attempt to play it, but we only attempt that check
+	  if the sound file was specified in the first place. If a sound file
+	  was not specified, we use the 'play number' logic in the helper
+	  function.
+
+	  (closes issue ASTERISK-19899)
+	  Reported by: Florian Gilcher
+	  Tested by: Florian Gilcher
+	  patches:
+	    ASTERISK-19899.diff uploaded by mjordan (license 6283)
+
 2012-05-29  Asterisk Development Team <asteriskteam at digium.com>
 
 	* Asterisk 10.4.1 Released.

Modified: tags/10.4.2/apps/app_confbridge.c
URL: http://svnview.digium.com/svn/asterisk/tags/10.4.2/apps/app_confbridge.c?view=diff&rev=367964&r1=367963&r2=367964
==============================================================================
--- tags/10.4.2/apps/app_confbridge.c (original)
+++ tags/10.4.2/apps/app_confbridge.c Wed May 30 09:22:53 2012
@@ -1144,8 +1144,8 @@
 	struct ast_channel *underlying_channel;
 
 	/* Do not waste resources trying to play files that do not exist */
-	if (!ast_fileexists(filename, NULL, NULL)) {
-		ast_log(LOG_WARNING, "File %s does not exist in any format\n", filename);
+	if (!ast_strlen_zero(filename) && !ast_fileexists(filename, NULL, NULL)) {
+		ast_log(LOG_WARNING, "File %s does not exist in any format\n", !ast_strlen_zero(filename) ? filename : "<unknown>");
 		return 0;
 	}
 
@@ -1165,7 +1165,7 @@
 	/* The channel is all under our control, in goes the prompt */
 	if (!ast_strlen_zero(filename)) {
 		ast_stream_and_wait(conference_bridge->playback_chan, filename, "");
-	} else {
+	} else if (say_number >= 0) {
 		ast_say_number(conference_bridge->playback_chan, say_number, "", conference_bridge->playback_chan->language, NULL);
 	}
 
@@ -1188,7 +1188,7 @@
  */
 static int play_sound_file(struct conference_bridge *conference_bridge, const char *filename)
 {
-	return play_sound_helper(conference_bridge, filename, 0);
+	return play_sound_helper(conference_bridge, filename, -1);
 }
 
 /*!

Modified: tags/10.4.2/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/tags/10.4.2/channels/chan_sip.c?view=diff&rev=367964&r1=367963&r2=367964
==============================================================================
--- tags/10.4.2/channels/chan_sip.c (original)
+++ tags/10.4.2/channels/chan_sip.c Wed May 30 09:22:53 2012
@@ -12778,13 +12778,14 @@
 	/* If we have no DNS manager let's do a lookup */
 	if (!mwi->dnsmgr) {
 		char transport[MAXHOSTNAMELEN];
+		struct sip_subscription_mwi *saved;
 		snprintf(transport, sizeof(transport), "_%s._%s", get_srv_service(mwi->transport), get_srv_protocol(mwi->transport));
 
 		mwi->us.ss.ss_family = get_address_family_filter(&bindaddr); /* Filter address family */
-		ASTOBJ_REF(mwi); /* Add a ref for storing the mwi on the dnsmgr for updates */
-		ast_dnsmgr_lookup_cb(mwi->hostname, &mwi->us, &mwi->dnsmgr, sip_cfg.srvlookup ? transport : NULL, on_dns_update_mwi, mwi);
+		saved = ASTOBJ_REF(mwi);
+		ast_dnsmgr_lookup_cb(mwi->hostname, &mwi->us, &mwi->dnsmgr, sip_cfg.srvlookup ? transport : NULL, on_dns_update_mwi, saved);
 		if (!mwi->dnsmgr) {
-			ASTOBJ_UNREF(mwi, sip_subscribe_mwi_destroy); /* dnsmgr disabled, remove reference */
+			ASTOBJ_UNREF(saved, sip_subscribe_mwi_destroy); /* dnsmgr disabled, remove reference */
 		}
 	}
 
@@ -30479,10 +30480,12 @@
 static void sip_send_all_mwi_subscriptions(void)
 {
 	ASTOBJ_CONTAINER_TRAVERSE(&submwil, 1, do {
+		struct sip_subscription_mwi *saved;
 		ASTOBJ_WRLOCK(iterator);
 		AST_SCHED_DEL(sched, iterator->resub);
-		if ((iterator->resub = ast_sched_add(sched, 1, sip_subscribe_mwi_do, ASTOBJ_REF(iterator))) < 0) {
-			ASTOBJ_UNREF(iterator, sip_subscribe_mwi_destroy);
+		saved = ASTOBJ_REF(iterator);
+		if ((iterator->resub = ast_sched_add(sched, 1, sip_subscribe_mwi_do, saved)) < 0) {
+			ASTOBJ_UNREF(saved, sip_subscribe_mwi_destroy);
 		}
 		ASTOBJ_UNLOCK(iterator);
 	} while (0));




More information about the asterisk-commits mailing list