[svn-commits] kaii: branch kaii/1.8-multicall r330825 - in /team/kaii/1.8-multicall: ./ add...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Aug 4 04:00:16 CDT 2011


Author: kaii
Date: Thu Aug  4 04:00:09 2011
New Revision: 330825

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=330825
Log:
merging multicall branch up to release 1.8.5.0


Added:
    team/kaii/1.8-multicall/ChangeLog
      - copied, changed from r327739, tags/1.8.5-rc1/ChangeLog
    team/kaii/1.8-multicall/asterisk-1.8.5.0-summary.html
      - copied unchanged from r330824, tags/1.8.5.0/asterisk-1.8.5.0-summary.html
    team/kaii/1.8-multicall/asterisk-1.8.5.0-summary.txt
      - copied unchanged from r330824, tags/1.8.5.0/asterisk-1.8.5.0-summary.txt
    team/kaii/1.8-multicall/tests/test_db.c
      - copied unchanged from r325707, branches/1.8/tests/test_db.c
    team/kaii/1.8-multicall/tests/test_netsock2.c
      - copied unchanged from r325707, branches/1.8/tests/test_netsock2.c
Removed:
    team/kaii/1.8-multicall/res/res_features.exports.in
Modified:
    team/kaii/1.8-multicall/   (props changed)
    team/kaii/1.8-multicall/CHANGES
    team/kaii/1.8-multicall/Makefile
    team/kaii/1.8-multicall/UPGRADE.txt
    team/kaii/1.8-multicall/addons/app_mysql.c
    team/kaii/1.8-multicall/addons/cdr_mysql.c
    team/kaii/1.8-multicall/addons/chan_mobile.c
    team/kaii/1.8-multicall/addons/chan_ooh323.c
    team/kaii/1.8-multicall/addons/ooh323c/src/ooSocket.c
    team/kaii/1.8-multicall/addons/ooh323c/src/oochannels.c
    team/kaii/1.8-multicall/addons/ooh323c/src/ooh245.c
    team/kaii/1.8-multicall/addons/res_config_mysql.c
    team/kaii/1.8-multicall/apps/app_amd.c
    team/kaii/1.8-multicall/apps/app_chanspy.c
    team/kaii/1.8-multicall/apps/app_confbridge.c
    team/kaii/1.8-multicall/apps/app_dial.c
    team/kaii/1.8-multicall/apps/app_directed_pickup.c
    team/kaii/1.8-multicall/apps/app_fax.c
    team/kaii/1.8-multicall/apps/app_festival.c
    team/kaii/1.8-multicall/apps/app_followme.c
    team/kaii/1.8-multicall/apps/app_ices.c
    team/kaii/1.8-multicall/apps/app_meetme.c
    team/kaii/1.8-multicall/apps/app_minivm.c
    team/kaii/1.8-multicall/apps/app_originate.c
    team/kaii/1.8-multicall/apps/app_privacy.c
    team/kaii/1.8-multicall/apps/app_queue.c
    team/kaii/1.8-multicall/apps/app_rpt.c
    team/kaii/1.8-multicall/apps/app_voicemail.c
    team/kaii/1.8-multicall/autoconf/ast_check_pwlib.m4
    team/kaii/1.8-multicall/build_tools/prep_tarball
    team/kaii/1.8-multicall/cdr/cdr_radius.c
    team/kaii/1.8-multicall/cdr/cdr_syslog.c
    team/kaii/1.8-multicall/cel/cel_odbc.c   (contents, props changed)
    team/kaii/1.8-multicall/cel/cel_pgsql.c
    team/kaii/1.8-multicall/cel/cel_radius.c
    team/kaii/1.8-multicall/channels/chan_agent.c
    team/kaii/1.8-multicall/channels/chan_alsa.c
    team/kaii/1.8-multicall/channels/chan_console.c
    team/kaii/1.8-multicall/channels/chan_dahdi.c
    team/kaii/1.8-multicall/channels/chan_h323.c
    team/kaii/1.8-multicall/channels/chan_iax2.c
    team/kaii/1.8-multicall/channels/chan_jingle.c
    team/kaii/1.8-multicall/channels/chan_local.c
    team/kaii/1.8-multicall/channels/chan_mgcp.c
    team/kaii/1.8-multicall/channels/chan_oss.c
    team/kaii/1.8-multicall/channels/chan_phone.c
    team/kaii/1.8-multicall/channels/chan_sip.c
    team/kaii/1.8-multicall/channels/chan_skinny.c
    team/kaii/1.8-multicall/channels/chan_unistim.c
    team/kaii/1.8-multicall/channels/chan_usbradio.c
    team/kaii/1.8-multicall/channels/iax2-provision.c
    team/kaii/1.8-multicall/channels/misdn/isdn_lib.c
    team/kaii/1.8-multicall/channels/misdn_config.c
    team/kaii/1.8-multicall/channels/sig_analog.c
    team/kaii/1.8-multicall/channels/sig_pri.c
    team/kaii/1.8-multicall/channels/sig_ss7.c
    team/kaii/1.8-multicall/channels/sip/include/sip.h
    team/kaii/1.8-multicall/channels/sip/reqresp_parser.c
    team/kaii/1.8-multicall/channels/sip/sdp_crypto.c
    team/kaii/1.8-multicall/codecs/lpc10/dyptrk.c
    team/kaii/1.8-multicall/configs/cel.conf.sample
    team/kaii/1.8-multicall/configs/cel_odbc.conf.sample   (props changed)
    team/kaii/1.8-multicall/configs/features.conf.sample
    team/kaii/1.8-multicall/configs/queuerules.conf.sample
    team/kaii/1.8-multicall/configs/queues.conf.sample
    team/kaii/1.8-multicall/configs/sip.conf.sample
    team/kaii/1.8-multicall/configs/sip_notify.conf.sample
    team/kaii/1.8-multicall/configure
    team/kaii/1.8-multicall/configure.ac
    team/kaii/1.8-multicall/contrib/init.d/rc.debian.asterisk
    team/kaii/1.8-multicall/contrib/realtime/mysql/iaxfriends.sql   (props changed)
    team/kaii/1.8-multicall/contrib/realtime/mysql/meetme.sql   (contents, props changed)
    team/kaii/1.8-multicall/contrib/realtime/mysql/queue_log.sql
    team/kaii/1.8-multicall/contrib/realtime/mysql/sipfriends.sql   (contents, props changed)
    team/kaii/1.8-multicall/contrib/realtime/mysql/voicemail.sql   (props changed)
    team/kaii/1.8-multicall/contrib/realtime/postgresql/realtime.sql   (props changed)
    team/kaii/1.8-multicall/contrib/scripts/safe_asterisk
    team/kaii/1.8-multicall/formats/format_wav.c
    team/kaii/1.8-multicall/funcs/func_curl.c
    team/kaii/1.8-multicall/funcs/func_enum.c
    team/kaii/1.8-multicall/include/asterisk/acl.h
    team/kaii/1.8-multicall/include/asterisk/astdb.h
    team/kaii/1.8-multicall/include/asterisk/autoconfig.h.in
    team/kaii/1.8-multicall/include/asterisk/bridging.h
    team/kaii/1.8-multicall/include/asterisk/bridging_technology.h
    team/kaii/1.8-multicall/include/asterisk/channel.h
    team/kaii/1.8-multicall/include/asterisk/dnsmgr.h
    team/kaii/1.8-multicall/include/asterisk/event.h
    team/kaii/1.8-multicall/include/asterisk/features.h
    team/kaii/1.8-multicall/include/asterisk/frame.h
    team/kaii/1.8-multicall/include/asterisk/linkedlists.h
    team/kaii/1.8-multicall/include/asterisk/logger.h
    team/kaii/1.8-multicall/include/asterisk/netsock2.h
    team/kaii/1.8-multicall/include/asterisk/pbx.h
    team/kaii/1.8-multicall/include/asterisk/rtp_engine.h
    team/kaii/1.8-multicall/include/asterisk/select.h
    team/kaii/1.8-multicall/include/asterisk/utils.h
    team/kaii/1.8-multicall/main/asterisk.c
    team/kaii/1.8-multicall/main/audiohook.c
    team/kaii/1.8-multicall/main/bridging.c
    team/kaii/1.8-multicall/main/ccss.c
    team/kaii/1.8-multicall/main/cdr.c
    team/kaii/1.8-multicall/main/channel.c
    team/kaii/1.8-multicall/main/config.c
    team/kaii/1.8-multicall/main/db.c
    team/kaii/1.8-multicall/main/dnsmgr.c
    team/kaii/1.8-multicall/main/dsp.c
    team/kaii/1.8-multicall/main/event.c
    team/kaii/1.8-multicall/main/features.c
    team/kaii/1.8-multicall/main/file.c
    team/kaii/1.8-multicall/main/fskmodem_float.c
    team/kaii/1.8-multicall/main/http.c
    team/kaii/1.8-multicall/main/manager.c
    team/kaii/1.8-multicall/main/netsock2.c
    team/kaii/1.8-multicall/main/pbx.c
    team/kaii/1.8-multicall/main/plc.c
    team/kaii/1.8-multicall/main/rtp_engine.c
    team/kaii/1.8-multicall/main/srv.c
    team/kaii/1.8-multicall/main/tcptls.c
    team/kaii/1.8-multicall/main/udptl.c
    team/kaii/1.8-multicall/main/utils.c
    team/kaii/1.8-multicall/pbx/pbx_config.c
    team/kaii/1.8-multicall/pbx/pbx_dundi.c
    team/kaii/1.8-multicall/pbx/pbx_lua.c
    team/kaii/1.8-multicall/res/Makefile
    team/kaii/1.8-multicall/res/res_agi.c
    team/kaii/1.8-multicall/res/res_calendar.c
    team/kaii/1.8-multicall/res/res_config_curl.c
    team/kaii/1.8-multicall/res/res_config_odbc.c
    team/kaii/1.8-multicall/res/res_config_pgsql.c
    team/kaii/1.8-multicall/res/res_config_sqlite.c
    team/kaii/1.8-multicall/res/res_crypto.c
    team/kaii/1.8-multicall/res/res_fax.c
    team/kaii/1.8-multicall/res/res_http_post.c
    team/kaii/1.8-multicall/res/res_jabber.c
    team/kaii/1.8-multicall/res/res_musiconhold.c
    team/kaii/1.8-multicall/res/res_odbc.c
    team/kaii/1.8-multicall/res/res_rtp_asterisk.c
    team/kaii/1.8-multicall/res/res_srtp.c
    team/kaii/1.8-multicall/sounds/Makefile   (contents, props changed)
    team/kaii/1.8-multicall/sounds/sounds.xml
    team/kaii/1.8-multicall/tests/test_astobj2.c
    team/kaii/1.8-multicall/tests/test_event.c
    team/kaii/1.8-multicall/tests/test_utils.c

Propchange: team/kaii/1.8-multicall/
------------------------------------------------------------------------------
--- branch-1.6.2-blocked (original)
+++ branch-1.6.2-blocked Thu Aug  4 04:00:09 2011
@@ -1,1 +1,1 @@
-/branches/1.6.2:279852,279883,280227,280556,280812,282668,299533,303273,309348
+/branches/1.6.2:279852,279883,280227,280556,280812,282668,299533,303273,309348,320506

Propchange: team/kaii/1.8-multicall/
------------------------------------------------------------------------------
Binary property 'branch-1.6.2-merged' - no diff available.

Propchange: team/kaii/1.8-multicall/
------------------------------------------------------------------------------
--- svn:externals (original)
+++ svn:externals Thu Aug  4 04:00:09 2011
@@ -1,1 +1,1 @@
-menuselect https://origsvn.digium.com/svn/menuselect/trunk
+menuselect https://origsvn.digium.com/svn/menuselect/tags/autotag_for_asterisk/1.8.5-rc1

Propchange: team/kaii/1.8-multicall/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug  4 04:00:09 2011
@@ -1,2 +1,4 @@
 /be/branches/C.3:256426
-/branches/1.8:311976-315199
+/branches/1.8:311976-325707
+/tags/1.8.5-rc1:325708-327739
+/tags/1.8.5.0:327740-330824

Modified: team/kaii/1.8-multicall/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/CHANGES?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/CHANGES (original)
+++ team/kaii/1.8-multicall/CHANGES Thu Aug  4 04:00:09 2011
@@ -436,6 +436,8 @@
  * Added a new eventfilter option per user to allow whitelisting and blacklisting
    of events.
  * Added optional parkinglot variable for park command.
+ * Added ConnectedLineNum and ConnectedLineName headers to AMI events/responses
+   if CallerIDNum and CallerIDName headers are also present.
 
 Channel Event Logging
 ---------------------

Copied: team/kaii/1.8-multicall/ChangeLog (from r327739, tags/1.8.5-rc1/ChangeLog)
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/ChangeLog?view=diff&rev=330825&p1=tags/1.8.5-rc1/ChangeLog&r1=327739&p2=team/kaii/1.8-multicall/ChangeLog&r2=330825
==============================================================================
--- tags/1.8.5-rc1/ChangeLog (original)
+++ team/kaii/1.8-multicall/ChangeLog Thu Aug  4 04:00:09 2011
@@ -1,3 +1,17 @@
+2011-07-11  Leif Madsen <lmadsen at digium.com>
+
+	* Asterisk 1.8.5.0 Released.
+
+	* r326484 | dvossel | 2011-07-06 10:26:49 -0500 (Wed, 06 Jul 2011)
+
+	  Reverts fix for timerfd locking issue.
+
+	  jrose discovered a performance issue with this
+	  fix that prevents his analog phones from working
+	  when using timerfd as a timing source.  Until
+	  it is understood what is causing this performance
+	  problem, this patch is being reverted.
+
 2011-06-29  Leif Madsen <lmadsen at digium.com>
 
 	* Asterisk 1.8.5-rc1 Released.

Modified: team/kaii/1.8-multicall/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/Makefile?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/Makefile (original)
+++ team/kaii/1.8-multicall/Makefile Thu Aug  4 04:00:09 2011
@@ -531,7 +531,6 @@
 	$(INSTALL) -d "$(DESTDIR)$(ASTLOGDIR)"
 	$(INSTALL) -d "$(DESTDIR)$(ASTLOGDIR)/cdr-csv"
 	$(INSTALL) -d "$(DESTDIR)$(ASTLOGDIR)/cdr-custom"
-	$(INSTALL) -d "$(DESTDIR)$(ASTLOGDIR)/cel-csv"
 	$(INSTALL) -d "$(DESTDIR)$(ASTLOGDIR)/cel-custom"
 	$(INSTALL) -d "$(DESTDIR)$(ASTDATADIR)"
 	$(INSTALL) -d "$(DESTDIR)$(ASTDATADIR)/documentation"
@@ -544,6 +543,7 @@
 	$(INSTALL) -d "$(DESTDIR)$(ASTDATADIR)/static-http"
 	$(INSTALL) -d "$(DESTDIR)$(ASTMANDIR)/man8"
 	$(INSTALL) -d "$(DESTDIR)$(AGI_DIR)"
+	$(INSTALL) -d "$(DESTDIR)$(ASTDBDIR)"
 
 bininstall: _all installdirs $(SUBDIRS_INSTALL)
 	$(INSTALL) -m 755 main/asterisk $(DESTDIR)$(ASTSBINDIR)/
@@ -911,7 +911,7 @@
 menuselect/makeopts: makeopts
 	+$(MAKE_MENUSELECT) makeopts
 
-menuselect-tree: $(foreach dir,$(filter-out main,$(MOD_SUBDIRS)),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml build_tools/cflags-devmode.xml sounds/sounds.xml build_tools/embed_modules.xml utils/utils.xml agi/agi.xml configure
+menuselect-tree: $(foreach dir,$(filter-out main,$(MOD_SUBDIRS)),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml build_tools/cflags-devmode.xml sounds/sounds.xml build_tools/embed_modules.xml utils/utils.xml agi/agi.xml configure makeopts
 	@echo "Generating input for menuselect ..."
 	@echo "<?xml version=\"1.0\"?>" > $@
 	@echo >> $@

Modified: team/kaii/1.8-multicall/UPGRADE.txt
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/UPGRADE.txt?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/UPGRADE.txt (original)
+++ team/kaii/1.8-multicall/UPGRADE.txt Thu Aug  4 04:00:09 2011
@@ -133,6 +133,14 @@
 * The default value for the pedantic option in sip.conf has been changed
   from "no" to "yes".
 
+* The ConnectedLineNum and ConnectedLineName headers were added to many AMI
+  events/responses if the CallerIDNum/CallerIDName headers were also present.
+  The addition of connected line support changes the behavior of the channel
+  caller ID somewhat.  The channel caller ID value no longer time shares with
+  the connected line ID on outgoing call legs.  The timing of some AMI
+  events/responses output the connected line ID as caller ID.  These party ID's
+  are now separate.
+
 From 1.6.1 to 1.6.2:
 
 * SIP no longer sends the 183 progress message for early media by

Modified: team/kaii/1.8-multicall/addons/app_mysql.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/addons/app_mysql.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/addons/app_mysql.c (original)
+++ team/kaii/1.8-multicall/addons/app_mysql.c Thu Aug  4 04:00:09 2011
@@ -546,7 +546,10 @@
 	result = 0;
 
 	if (autoclear) {
-		struct ast_datastore *mysql_store = ast_channel_datastore_find(chan, &mysql_ds_info, NULL);
+		struct ast_datastore *mysql_store = NULL;
+
+		ast_channel_lock(chan);
+		mysql_store = ast_channel_datastore_find(chan, &mysql_ds_info, NULL);
 		if (!mysql_store) {
 			if (!(mysql_store = ast_datastore_alloc(&mysql_ds_info, NULL))) {
 				ast_log(LOG_WARNING, "Unable to allocate new datastore.\n");
@@ -555,6 +558,7 @@
 				ast_channel_datastore_add(chan, mysql_store);
 			}
 		}
+		ast_channel_unlock(chan);
 	}
 	ast_mutex_lock(&_mysql_mutex);
 

Modified: team/kaii/1.8-multicall/addons/cdr_mysql.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/addons/cdr_mysql.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/addons/cdr_mysql.c (original)
+++ team/kaii/1.8-multicall/addons/cdr_mysql.c Thu Aug  4 04:00:09 2011
@@ -325,7 +325,7 @@
 				ast_str_make_space(&escape, (valsz = strlen(value)) * 2 + 1);
 				mysql_real_escape_string(&mysql, ast_str_buffer(escape), value, valsz);
 
-				ast_str_append(&sql1, 0, "%s", entry->name);
+				ast_str_append(&sql1, 0, "`%s`", entry->name);
 				ast_str_append(&sql2, 0, "'%s'", ast_str_buffer(escape));
 			}
 		}

Modified: team/kaii/1.8-multicall/addons/chan_mobile.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/addons/chan_mobile.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/addons/chan_mobile.c (original)
+++ team/kaii/1.8-multicall/addons/chan_mobile.c Thu Aug  4 04:00:09 2011
@@ -1188,7 +1188,7 @@
 	int res = AST_DEVICE_INVALID;
 	struct mbl_pvt *pvt;
 
-	device = ast_strdupa(S_OR(data, ""));
+	device = ast_strdupa(S_OR((char *) data, ""));
 
 	ast_debug(1, "Checking device state for device %s\n", device);
 

Modified: team/kaii/1.8-multicall/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/addons/chan_ooh323.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/addons/chan_ooh323.c (original)
+++ team/kaii/1.8-multicall/addons/chan_ooh323.c Thu Aug  4 04:00:09 2011
@@ -1079,6 +1079,7 @@
 static int ooh323_answer(struct ast_channel *ast)
 {
 	struct ooh323_pvt *p = ast->tech_pvt;
+	char *callToken = (char *)NULL;
 
 	if (gH323Debug)
 		ast_verbose("--- ooh323_answer\n");
@@ -1086,8 +1087,18 @@
 	if (p) {
 
 		ast_mutex_lock(&p->lock);
+		callToken = (p->callToken ? strdup(p->callToken) : NULL);
 		if (ast->_state != AST_STATE_UP) {
 			ast_channel_lock(ast);
+			if (!p->alertsent) {
+	    			if (gH323Debug) {
+					ast_debug(1, "Sending forced ringback for %s, res = %d\n", 
+						callToken, ooManualRingback(callToken));
+				} else {
+	    				ooManualRingback(callToken);
+				}
+				p->alertsent = 1;
+			}
 			ast_setstate(ast, AST_STATE_UP);
       			if (option_debug)
 				ast_debug(1, "ooh323_answer(%s)\n", ast->name);
@@ -1252,6 +1263,7 @@
 			} else {
 	    				ooManualRingback(callToken);
 			}
+			p->alertsent = 1;
 		}
 	    }
 	 break;

Modified: team/kaii/1.8-multicall/addons/ooh323c/src/ooSocket.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/addons/ooh323c/src/ooSocket.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/addons/ooh323c/src/ooSocket.c (original)
+++ team/kaii/1.8-multicall/addons/ooh323c/src/ooSocket.c Thu Aug  4 04:00:09 2011
@@ -522,10 +522,10 @@
    ret = gethostname(hostname, 100);
    if(ret == 0)
    {
-      if (!(hp = ast_gethostbyname(hostname, &phost))) {
+      if ((hp = ast_gethostbyname(hostname, &phost))) {
 	  		struct in_addr i;
 			memcpy(&i, hp->h_addr, sizeof(i));
-			  strcpy(pIPAddrs, (ast_inet_ntoa(i) == NULL) ? "127.0.0.1" : ast_inet_ntoa(i));
+			strcpy(pIPAddrs, (ast_inet_ntoa(i) == NULL) ? "127.0.0.1" : ast_inet_ntoa(i));
       } else {
          return -1;
       }

Modified: team/kaii/1.8-multicall/addons/ooh323c/src/oochannels.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/addons/ooh323c/src/oochannels.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/addons/ooh323c/src/oochannels.c (original)
+++ team/kaii/1.8-multicall/addons/ooh323c/src/oochannels.c Thu Aug  4 04:00:09 2011
@@ -671,10 +671,11 @@
 
     if (0 != call->pH245Channel && 0 != call->pH245Channel->sock)
     {
-     if(call->pH245Channel->outQueue.count>0)
-     {                           
-      if(ooPDWrite(pfds, nfds, call->pH245Channel->sock))
-       ooSendMsg(call, OOH245MSG);
+     if(ooPDWrite(pfds, nfds, call->pH245Channel->sock)) {
+      while (call->pH245Channel->outQueue.count>0) {
+       if (ooSendMsg(call, OOH245MSG) != OO_OK)
+	break;
+      }
      }
     }
     else if(call->h245listener)
@@ -691,20 +692,23 @@
     {
      if(ooPDWrite(pfds, nfds, call->pH225Channel->sock))
      {
-      if(call->pH225Channel->outQueue.count>0)
+      while (call->pH225Channel->outQueue.count>0)
       {
        OOTRACEDBGC3("Sending H225 message (%s, %s)\n", 
                         call->callType, call->callToken);
-       ooSendMsg(call, OOQ931MSG);
+       if (ooSendMsg(call, OOQ931MSG) != OO_OK)
+	break;
       }
       if(call->pH245Channel && 
          call->pH245Channel->outQueue.count>0 && 
-        OO_TESTFLAG (call->flags, OO_M_TUNNELING))
-      {
+        OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
+       while (call->pH245Channel->outQueue.count>0) {
         OOTRACEDBGC3("H245 message needs to be tunneled. "
                           "(%s, %s)\n", call->callType, 
                                call->callToken);
-        ooSendMsg(call, OOH245MSG);
+        if (ooSendMsg(call, OOH245MSG) != OO_OK)
+	 break;
+       }
       }
      }                                
     }
@@ -1319,7 +1323,7 @@
    {
       OOTRACEDBGA3("Warning:Call marked for cleanup. Can not send message."
                    "(%s, %s)\n", call->callType, call->callToken);
-      return OO_OK;
+      return OO_FAILED;
    }
 
    if(type == OOQ931MSG)

Modified: team/kaii/1.8-multicall/addons/ooh323c/src/ooh245.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/addons/ooh323c/src/ooh245.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/addons/ooh323c/src/ooh245.c (original)
+++ team/kaii/1.8-multicall/addons/ooh323c/src/ooh245.c Thu Aug  4 04:00:09 2011
@@ -2074,6 +2074,8 @@
                ooClearAllLogicalChannels(call);
             }
             ooSendEndSessionCommand(call);
+	    if (call->callState < OO_CALL_CLEAR)
+	        call->callState = OO_CALL_CLEAR;
          }
             
             

Modified: team/kaii/1.8-multicall/addons/res_config_mysql.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/addons/res_config_mysql.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/addons/res_config_mysql.c (original)
+++ team/kaii/1.8-multicall/addons/res_config_mysql.c Thu Aug  4 04:00:09 2011
@@ -398,7 +398,7 @@
 				} else if (ast_strlen_zero(row[i])) {
 					row[i] = " ";
 				}
-				for (stringp = ast_strdupa(row[i]), chunk = strsep(&stringp, ";"); chunk; chunk = strsep(&stringp, ";")) {
+				for (stringp = row[i], chunk = strsep(&stringp, ";"); chunk; chunk = strsep(&stringp, ";")) {
 					if (prev) {
 						if ((prev->next = ast_variable_new(fields[i].name, decode_chunk(chunk), ""))) {
 							prev = prev->next;
@@ -524,7 +524,7 @@
 			for (i = 0; i < numFields; i++) {
 				if (ast_strlen_zero(row[i]))
 					continue;
-				for (stringp = ast_strdupa(row[i]), chunk = strsep(&stringp, ";"); chunk; chunk = strsep(&stringp, ";")) {
+				for (stringp = row[i], chunk = strsep(&stringp, ";"); chunk; chunk = strsep(&stringp, ";")) {
 					if (chunk && !ast_strlen_zero(decode_chunk(ast_strip(chunk)))) {
 						if (initfield && !strcmp(initfield, fields[i].name)) {
 							ast_category_rename(cat, chunk);
@@ -608,7 +608,7 @@
 	   If there is only 1 set, then we have our query. Otherwise, loop thru the list and concat */
 
 	ESCAPE_STRING(buf, newval);
-	ast_str_set(&sql, 0, "UPDATE %s SET %s = '%s'", tablename, newparam, ast_str_buffer(buf));
+	ast_str_set(&sql, 0, "UPDATE %s SET `%s` = '%s'", tablename, newparam, ast_str_buffer(buf));
 
 	/* If the column length isn't long enough, give a chance to lengthen it. */
 	if (strncmp(column->type, "char", 4) == 0 || strncmp(column->type, "varchar", 7) == 0) {
@@ -625,7 +625,7 @@
 		}
 
 		ESCAPE_STRING(buf, newval);
-		ast_str_append(&sql, 0, ", %s = '%s'", newparam, ast_str_buffer(buf));
+		ast_str_append(&sql, 0, ", `%s` = '%s'", newparam, ast_str_buffer(buf));
 
 		/* If the column length isn't long enough, give a chance to lengthen it. */
 		if (strncmp(column->type, "char", 4) == 0 || strncmp(column->type, "varchar", 7) == 0) {
@@ -635,7 +635,7 @@
 	va_end(ap);
 
 	ESCAPE_STRING(buf, lookup);
-	ast_str_append(&sql, 0, " WHERE %s = '%s'", keyfield, ast_str_buffer(buf));
+	ast_str_append(&sql, 0, " WHERE `%s` = '%s'", keyfield, ast_str_buffer(buf));
 
 	ast_debug(1, "MySQL RealTime: Update SQL: %s\n", ast_str_buffer(sql));
 
@@ -719,7 +719,7 @@
 			return -1;
 		}
 		ESCAPE_STRING(buf, newval);
-		ast_str_append(&where, 0, "%s %s='%s'", first ? "" : " AND", newparam, ast_str_buffer(buf));
+		ast_str_append(&where, 0, "%s `%s` = '%s'", first ? "" : " AND", newparam, ast_str_buffer(buf));
 		first = 0;
 
 		/* If the column length isn't long enough, give a chance to lengthen it. */
@@ -744,7 +744,7 @@
 		}
 
 		ESCAPE_STRING(buf, newval);
-		ast_str_append(&sql, 0, "%s %s = '%s'", first ? "" : ",", newparam, ast_str_buffer(buf));
+		ast_str_append(&sql, 0, "%s `%s` = '%s'", first ? "" : ",", newparam, ast_str_buffer(buf));
 		first = 0;
 
 		/* If the column length isn't long enough, give a chance to lengthen it. */
@@ -816,7 +816,7 @@
 	/* Create the first part of the query using the first parameter/value pairs we just extracted
 		If there is only 1 set, then we have our query. Otherwise, loop thru the list and concat */
 	ESCAPE_STRING(buf, newval);
-	ast_str_set(&sql, 0, "INSERT INTO %s (%s", table, newparam);
+	ast_str_set(&sql, 0, "INSERT INTO %s (`%s`", table, newparam);
 	ast_str_set(&sql2, 0, ") VALUES ('%s'", ast_str_buffer(buf));
 
 	internal_require(database, table, newparam, RQ_CHAR, ast_str_strlen(buf), SENTINEL);
@@ -828,7 +828,7 @@
 			ast_str_reset(buf);
 		}
 		if (internal_require(database, table, newparam, RQ_CHAR, ast_str_strlen(buf), SENTINEL) == 0) {
-			ast_str_append(&sql, 0, ", %s", newparam);
+			ast_str_append(&sql, 0, ", `%s`", newparam);
 			ast_str_append(&sql2, 0, ", '%s'", ast_str_buffer(buf));
 		}
 	}
@@ -894,11 +894,11 @@
 	/* Create the first part of the query using the first parameter/value pairs we just extracted
 	   If there is only 1 set, then we have our query. Otherwise, loop thru the list and concat */
 	ESCAPE_STRING(buf, lookup);
-	ast_str_set(&sql, 0, "DELETE FROM %s WHERE %s = '%s'", table, keyfield, ast_str_buffer(buf));
+	ast_str_set(&sql, 0, "DELETE FROM %s WHERE `%s` = '%s'", table, keyfield, ast_str_buffer(buf));
 	while ((newparam = va_arg(ap, const char *))) {
 		newval = va_arg(ap, const char *);
 		ESCAPE_STRING(buf, newval);
-		ast_str_append(&sql, 0, " AND %s = '%s'", newparam, ast_str_buffer(buf));
+		ast_str_append(&sql, 0, " AND `%s` = '%s'", newparam, ast_str_buffer(buf));
 	}
 	va_end(ap);
 
@@ -1074,7 +1074,7 @@
 			res = -1;
 			break;
 		}
-		ast_str_set(&sql, 0, "ALTER TABLE %s MODIFY %s %s", tablename, column->name, ast_str_buffer(typestr));
+		ast_str_set(&sql, 0, "ALTER TABLE %s MODIFY `%s` %s", tablename, column->name, ast_str_buffer(typestr));
 		if (!column->null) {
 			ast_str_append(&sql, 0, " NOT NULL");
 		}

Modified: team/kaii/1.8-multicall/apps/app_amd.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/apps/app_amd.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/apps/app_amd.c (original)
+++ team/kaii/1.8-multicall/apps/app_amd.c Thu Aug  4 04:00:09 2011
@@ -156,7 +156,6 @@
 	int iTotalTime = 0;
 	int iWordsCount = 0;
 	int currentState = STATE_IN_WORD;
-	int previousState = STATE_IN_SILENCE;
 	int consecutiveVoiceDuration = 0;
 	char amdCause[256] = "", amdStatus[256] = "";
 	char *parse = ast_strdupa(data);
@@ -301,7 +300,6 @@
 				
 				if (silenceDuration >= betweenWordsSilence) {
 					if (currentState != STATE_IN_SILENCE ) {
-						previousState = currentState;
 						ast_verb(3, "AMD: Channel [%s]. Changed state to STATE_IN_SILENCE\n", chan->name);
 					}
 					/* Find words less than word duration */
@@ -341,7 +339,6 @@
 				if (consecutiveVoiceDuration >= minimumWordLength && currentState == STATE_IN_SILENCE) {
 					iWordsCount++;
 					ast_verb(3, "AMD: Channel [%s]. Word detected. iWordsCount:%d\n", chan->name, iWordsCount);
-					previousState = currentState;
 					currentState = STATE_IN_WORD;
 				}
 				if (consecutiveVoiceDuration >= maximumWordLength){

Modified: team/kaii/1.8-multicall/apps/app_chanspy.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/apps/app_chanspy.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/apps/app_chanspy.c (original)
+++ team/kaii/1.8-multicall/apps/app_chanspy.c Thu Aug  4 04:00:09 2011
@@ -404,6 +404,7 @@
 	struct ast_audiohook bridge_whisper_audiohook;
 	int fd;
 	int volfactor;
+	struct ast_flags flags;
 };
 
 struct spy_dtmf_options {
@@ -435,7 +436,7 @@
 		return -1;
 	}
 
-	if (ast_test_flag(&csth->spy_audiohook, OPTION_READONLY)) {
+	if (ast_test_flag(&csth->flags, OPTION_READONLY)) {
 		/* Option 'o' was set, so don't mix channel audio */
 		f = ast_audiohook_read_frame(&csth->spy_audiohook, samples, AST_AUDIOHOOK_DIRECTION_READ, AST_FORMAT_SLINEAR);
 	} else {
@@ -536,7 +537,7 @@
 			spyer_name, name);
 
 	memset(&csth, 0, sizeof(csth));
-	ast_copy_flags(&csth.spy_audiohook, flags, AST_FLAGS_ALL);
+	ast_copy_flags(&csth.flags, flags, AST_FLAGS_ALL);
 
 	ast_audiohook_init(&csth.spy_audiohook, AST_AUDIOHOOK_TYPE_SPY, "ChanSpy");
 

Modified: team/kaii/1.8-multicall/apps/app_confbridge.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/apps/app_confbridge.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/apps/app_confbridge.c (original)
+++ team/kaii/1.8-multicall/apps/app_confbridge.c Thu Aug  4 04:00:09 2011
@@ -198,30 +198,31 @@
  * \param conference_bridge Conference bridge to peek at
  * \param conference_bridge_user Caller
  *
- * \return Returns nothing
- */
-static void announce_user_count(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user)
+ * \return Returns 0 on success, -1 if the user hung up
+ */
+static int announce_user_count(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user)
 {
 	if (conference_bridge->users == 1) {
 		/* Awww we are the only person in the conference bridge */
-		return;
+		return 0;
 	} else if (conference_bridge->users == 2) {
 		/* Eep, there is one other person */
 		if (ast_stream_and_wait(conference_bridge_user->chan, "conf-onlyone", "")) {
-			return;
+			return -1;
 		}
 	} else {
 		/* Alas multiple others in here */
 		if (ast_stream_and_wait(conference_bridge_user->chan, "conf-thereare", "")) {
-			return;
+			return -1;
 		}
 		if (ast_say_number(conference_bridge_user->chan, conference_bridge->users - 1, "", conference_bridge_user->chan->language, NULL)) {
-			return;
+			return -1;
 		}
 		if (ast_stream_and_wait(conference_bridge_user->chan, "conf-otherinparty", "")) {
-			return;
-		}
-	}
+			return -1;
+		}
+	}
+	return 0;
 }
 
 /*!
@@ -231,15 +232,17 @@
  * \param chan Channel to play audio prompt to
  * \param file Prompt to play
  *
- * \return Returns nothing
+ * \return Returns 0 on success, -1 if the user hung up
  *
  * \note This function assumes that conference_bridge is locked
  */
-static void play_prompt_to_channel(struct conference_bridge *conference_bridge, struct ast_channel *chan, const char *file)
-{
+static int play_prompt_to_channel(struct conference_bridge *conference_bridge, struct ast_channel *chan, const char *file)
+{
+	int res;
 	ao2_unlock(conference_bridge);
-	ast_stream_and_wait(chan, file, "");
+	res = ast_stream_and_wait(chan, file, "");
 	ao2_lock(conference_bridge);
+	return res;
 }
 
 /*!
@@ -248,16 +251,16 @@
  * \param conference_bridge Conference bridge being joined
  * \param conference_bridge_user Conference bridge user joining
  *
- * \return Returns nothing
- */
-static void post_join_marked(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user)
+ * \return Returns 0 on success, -1 if the user hung up
+ */
+static int post_join_marked(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user)
 {
 	if (ast_test_flag(&conference_bridge_user->flags, OPTION_MARKEDUSER)) {
 		struct conference_bridge_user *other_conference_bridge_user = NULL;
 
 		/* If we are not the first marked user to join just bail out now */
 		if (conference_bridge->markedusers >= 2) {
-			return;
+			return 0;
 		}
 
 		/* Iterate through every participant stopping MOH on them if need be */
@@ -291,13 +294,16 @@
 	} else {
 		/* If a marked user already exists in the conference bridge we can just bail out now */
 		if (conference_bridge->markedusers) {
-			return;
+			return 0;
 		}
 		/* Be sure we are muted so we can't talk to anybody else waiting */
 		conference_bridge_user->features.mute = 1;
 		/* If we have not been quieted play back that they are waiting for the leader */
 		if (!ast_test_flag(&conference_bridge_user->flags, OPTION_QUIET)) {
-			play_prompt_to_channel(conference_bridge, conference_bridge_user->chan, "conf-waitforleader");
+			if (play_prompt_to_channel(conference_bridge, conference_bridge_user->chan, "conf-waitforleader")) {
+				/* user hung up while the sound was playing */
+				return -1;
+			}
 		}
 		/* Start music on hold if needed */
 		/* We need to recheck the markedusers value here. play_prompt_to_channel unlocks the conference bridge, potentially
@@ -307,6 +313,7 @@
 			ast_moh_start(conference_bridge_user->chan, conference_bridge_user->opt_args[OPTION_MUSICONHOLD_CLASS], NULL);
 		}
 	}
+	return 0;
 }
 
 /*!
@@ -315,15 +322,18 @@
  * \param conference_bridge Conference bridge being joined
  * \param conference_bridge_user Conference bridge user joining
  *
- * \return Returns nothing
- */
-static void post_join_unmarked(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user)
+ * \return Returns 0 on success, -1 if the user hung up
+ */
+static int post_join_unmarked(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user)
 {
 	/* Play back audio prompt and start MOH if need be if we are the first participant */
 	if (conference_bridge->users == 1) {
 		/* If audio prompts have not been quieted or this prompt quieted play it on out */
 		if (!ast_test_flag(&conference_bridge_user->flags, OPTION_QUIET | OPTION_NOONLYPERSON)) {
-			play_prompt_to_channel(conference_bridge, conference_bridge_user->chan, "conf-onlyperson");
+			if (play_prompt_to_channel(conference_bridge, conference_bridge_user->chan, "conf-onlyperson")) {
+				/* user hung up while the sound was playing */
+				return -1;
+			}
 		}
 		/* If we need to start music on hold on the channel do so now */
 		/* We need to re-check the number of users in the conference bridge here because another conference bridge
@@ -332,13 +342,16 @@
 		if (conference_bridge->users == 1 && ast_test_flag(&conference_bridge_user->flags, OPTION_MUSICONHOLD)) {
 			ast_moh_start(conference_bridge_user->chan, conference_bridge_user->opt_args[OPTION_MUSICONHOLD_CLASS], NULL);
 		}
-		return;
+		return 0;
 	}
 
 	/* Announce number of users if need be */
 	if (ast_test_flag(&conference_bridge_user->flags, OPTION_ANNOUNCEUSERCOUNT)) {
 		ao2_unlock(conference_bridge);
-		announce_user_count(conference_bridge, conference_bridge_user);
+		if (announce_user_count(conference_bridge, conference_bridge_user)) {
+			ao2_lock(conference_bridge);
+			return -1;
+		}
 		ao2_lock(conference_bridge);
 	}
 
@@ -352,6 +365,7 @@
 			ast_bridge_unsuspend(conference_bridge->bridge, first_participant->chan);
 		}
 	}
+	return 0;
 }
 
 /*!
@@ -382,6 +396,8 @@
 		conference_bridge->bridge = NULL;
 	}
 }
+
+static void leave_conference_bridge(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user);
 
 /*!
  * \brief Join a conference bridge
@@ -470,9 +486,17 @@
 
 	/* If the caller is a marked user or is waiting for a marked user to enter pass 'em off, otherwise pass them off to do regular joining stuff */
 	if (ast_test_flag(&conference_bridge_user->flags, OPTION_MARKEDUSER | OPTION_WAITMARKED)) {
-		post_join_marked(conference_bridge, conference_bridge_user);
+		if (post_join_marked(conference_bridge, conference_bridge_user)) {
+			ao2_unlock(conference_bridge);
+			leave_conference_bridge(conference_bridge, conference_bridge_user);
+			return NULL;
+		}
 	} else {
-		post_join_unmarked(conference_bridge, conference_bridge_user);
+		if (post_join_unmarked(conference_bridge, conference_bridge_user)) {
+			ao2_unlock(conference_bridge);
+			leave_conference_bridge(conference_bridge, conference_bridge_user);
+			return NULL;
+		}
 	}
 
 	ao2_unlock(conference_bridge);

Modified: team/kaii/1.8-multicall/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/apps/app_dial.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/apps/app_dial.c (original)
+++ team/kaii/1.8-multicall/apps/app_dial.c Thu Aug  4 04:00:09 2011
@@ -65,6 +65,7 @@
 #include "asterisk/aoc.h"
 #include "asterisk/ccss.h"
 #include "asterisk/indications.h"
+#include "asterisk/framehook.h"
 
 /*** DOCUMENTATION
 	<application name="Dial" language="en_US">
@@ -638,7 +639,8 @@
 	OPT_CALLER_HANGUP | OPT_CALLEE_TRANSFER | OPT_CALLER_TRANSFER | \
 	OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR | OPT_CALLEE_PARK |  \
 	OPT_CALLER_PARK | OPT_ANNOUNCE | OPT_CALLEE_MACRO | OPT_CALLEE_GOSUB) && \
-	!chan->audiohooks && !peer->audiohooks)
+	!chan->audiohooks && !peer->audiohooks && \
+	ast_framehook_list_is_empty(chan->framehooks) && ast_framehook_list_is_empty(peer->framehooks))
 
 /*
  * The list of active channels
@@ -775,12 +777,16 @@
 		"Destination: %s\r\n"
 		"CallerIDNum: %s\r\n"
 		"CallerIDName: %s\r\n"
+		"ConnectedLineNum: %s\r\n"
+		"ConnectedLineName: %s\r\n"
 		"UniqueID: %s\r\n"
 		"DestUniqueID: %s\r\n"
 		"Dialstring: %s\r\n",
 		src->name, dst->name,
 		S_COR(src->caller.id.number.valid, src->caller.id.number.str, "<unknown>"),
 		S_COR(src->caller.id.name.valid, src->caller.id.name.str, "<unknown>"),
+		S_COR(src->connected.id.number.valid, src->connected.id.number.str, "<unknown>"),
+		S_COR(src->connected.id.name.valid, src->connected.id.name.str, "<unknown>"),
 		src->uniqueid, dst->uniqueid,
 		dialstring ? dialstring : "");
 }
@@ -2351,6 +2357,7 @@
 				 * No hint name available.  We have a connected name supplied by
 				 * the dialplan we can use instead.
 				 */
+				caller.id.name.valid = 1;
 				caller.id.name = chan->connected.id.name;
 			}
 			ast_channel_set_caller_event(tc, &caller, NULL);
@@ -2364,6 +2371,7 @@
 				 * We have a connected name supplied by the dialplan we can
 				 * use instead.
 				 */
+				caller.id.name.valid = 1;
 				caller.id.name = chan->connected.id.name;
 				ast_channel_set_caller_event(tc, &caller, NULL);
 			}
@@ -2507,8 +2515,11 @@
 	 * to which the datastore was moved hangs up, it will attempt to free this
 	 * datastore again, causing a crash
 	 */
-	if (!ast_channel_datastore_remove(chan, datastore))
+	ast_channel_lock(chan);
+	if (!ast_channel_datastore_remove(chan, datastore)) {
 		ast_datastore_free(datastore);
+	}
+	ast_channel_unlock(chan);
 	if (!peer) {
 		if (result) {
 			res = result;

Modified: team/kaii/1.8-multicall/apps/app_directed_pickup.c
URL: http://svnview.digium.com/svn/asterisk/team/kaii/1.8-multicall/apps/app_directed_pickup.c?view=diff&rev=330825&r1=330824&r2=330825
==============================================================================
--- team/kaii/1.8-multicall/apps/app_directed_pickup.c (original)
+++ team/kaii/1.8-multicall/apps/app_directed_pickup.c Thu Aug  4 04:00:09 2011
@@ -97,62 +97,6 @@
 static const char app2[] = "PickupChan";
 /*! \todo This application should return a result code, like PICKUPRESULT */
 
-/* Perform actual pickup between two channels */
-static int pickup_do(struct ast_channel *chan, struct ast_channel *target)
-{
-	int res = 0;
-	struct ast_party_connected_line connected_caller;
-	struct ast_channel *chans[2] = { chan, target };
-
-	ast_debug(1, "Call pickup on '%s' by '%s'\n", target->name, chan->name);

[... 15210 lines stripped ...]



More information about the svn-commits mailing list