[svn-commits] oej: branch oej/iaxtrunkfix-1.4 r46505 - in /team/oej/iaxtrunkfix-1.4: ./ app...

svn-commits at lists.digium.com svn-commits at lists.digium.com
Mon Oct 30 13:46:43 MST 2006


Author: oej
Date: Mon Oct 30 14:46:42 2006
New Revision: 46505

URL: http://svn.digium.com/view/asterisk?rev=46505&view=rev
Log:
Keep branch alive

Added:
    team/oej/iaxtrunkfix-1.4/build_tools/prep_tarball
      - copied unchanged from r46474, branches/1.4/build_tools/prep_tarball
    team/oej/iaxtrunkfix-1.4/pbx/ael/ael-test/ael-vtest17/
      - copied from r46474, branches/1.4/pbx/ael/ael-test/ael-vtest17/
    team/oej/iaxtrunkfix-1.4/pbx/ael/ael-test/ael-vtest17/extensions.ael
      - copied unchanged from r46474, branches/1.4/pbx/ael/ael-test/ael-vtest17/extensions.ael
    team/oej/iaxtrunkfix-1.4/pbx/ael/ael-test/ref.ael-vtest17
      - copied unchanged from r46474, branches/1.4/pbx/ael/ael-test/ref.ael-vtest17
Modified:
    team/oej/iaxtrunkfix-1.4/   (props changed)
    team/oej/iaxtrunkfix-1.4/CHANGES
    team/oej/iaxtrunkfix-1.4/CREDITS
    team/oej/iaxtrunkfix-1.4/LICENSE
    team/oej/iaxtrunkfix-1.4/Makefile
    team/oej/iaxtrunkfix-1.4/apps/app_chanspy.c
    team/oej/iaxtrunkfix-1.4/apps/app_dial.c
    team/oej/iaxtrunkfix-1.4/apps/app_directed_pickup.c
    team/oej/iaxtrunkfix-1.4/apps/app_externalivr.c
    team/oej/iaxtrunkfix-1.4/apps/app_getcpeid.c
    team/oej/iaxtrunkfix-1.4/apps/app_ices.c
    team/oej/iaxtrunkfix-1.4/apps/app_meetme.c
    team/oej/iaxtrunkfix-1.4/apps/app_page.c
    team/oej/iaxtrunkfix-1.4/apps/app_parkandannounce.c
    team/oej/iaxtrunkfix-1.4/apps/app_playback.c
    team/oej/iaxtrunkfix-1.4/apps/app_queue.c
    team/oej/iaxtrunkfix-1.4/apps/app_record.c
    team/oej/iaxtrunkfix-1.4/apps/app_rpt.c
    team/oej/iaxtrunkfix-1.4/apps/app_sms.c
    team/oej/iaxtrunkfix-1.4/apps/app_softhangup.c
    team/oej/iaxtrunkfix-1.4/apps/app_voicemail.c
    team/oej/iaxtrunkfix-1.4/cdr/cdr_custom.c
    team/oej/iaxtrunkfix-1.4/cdr/cdr_odbc.c
    team/oej/iaxtrunkfix-1.4/channels/chan_alsa.c
    team/oej/iaxtrunkfix-1.4/channels/chan_features.c
    team/oej/iaxtrunkfix-1.4/channels/chan_gtalk.c
    team/oej/iaxtrunkfix-1.4/channels/chan_h323.c
    team/oej/iaxtrunkfix-1.4/channels/chan_iax2.c
    team/oej/iaxtrunkfix-1.4/channels/chan_mgcp.c
    team/oej/iaxtrunkfix-1.4/channels/chan_misdn.c
    team/oej/iaxtrunkfix-1.4/channels/chan_nbs.c
    team/oej/iaxtrunkfix-1.4/channels/chan_phone.c
    team/oej/iaxtrunkfix-1.4/channels/chan_sip.c
    team/oej/iaxtrunkfix-1.4/channels/chan_zap.c
    team/oej/iaxtrunkfix-1.4/channels/misdn/chan_misdn_config.h
    team/oej/iaxtrunkfix-1.4/channels/misdn/isdn_lib.c
    team/oej/iaxtrunkfix-1.4/channels/misdn/isdn_lib.h
    team/oej/iaxtrunkfix-1.4/channels/misdn/isdn_msg_parser.c
    team/oej/iaxtrunkfix-1.4/channels/misdn_config.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/analys.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/bsynz.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/chanwr.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/dcbias.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/decode.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/deemp.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/difmag.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/dyptrk.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/encode.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/energy.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/ham84.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/hp100.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/invert.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/irc2pc.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/ivfilt.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/lpcdec.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/lpcenc.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/lpcini.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/lpfilt.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/median.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/mload.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/onset.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/pitsyn.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/placea.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/placev.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/preemp.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/prepro.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/random.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/rcchk.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/synths.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/tbdm.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/voicin.c
    team/oej/iaxtrunkfix-1.4/codecs/lpc10/vparms.c
    team/oej/iaxtrunkfix-1.4/configs/misdn.conf.sample
    team/oej/iaxtrunkfix-1.4/configs/sip.conf.sample
    team/oej/iaxtrunkfix-1.4/configs/sip_notify.conf.sample
    team/oej/iaxtrunkfix-1.4/configure
    team/oej/iaxtrunkfix-1.4/configure.ac
    team/oej/iaxtrunkfix-1.4/contrib/asterisk-ng-doxygen
    team/oej/iaxtrunkfix-1.4/contrib/scripts/astgenkey.8
    team/oej/iaxtrunkfix-1.4/doc/backtrace.txt
    team/oej/iaxtrunkfix-1.4/doc/imapstorage.txt
    team/oej/iaxtrunkfix-1.4/formats/format_ogg_vorbis.c
    team/oej/iaxtrunkfix-1.4/formats/format_pcm.c
    team/oej/iaxtrunkfix-1.4/funcs/func_channel.c
    team/oej/iaxtrunkfix-1.4/funcs/func_logic.c
    team/oej/iaxtrunkfix-1.4/funcs/func_rand.c
    team/oej/iaxtrunkfix-1.4/include/asterisk/autoconfig.h.in
    team/oej/iaxtrunkfix-1.4/include/asterisk/channel.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/doxyref.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/file.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/frame.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/lock.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/module.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/stringfields.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/translate.h
    team/oej/iaxtrunkfix-1.4/include/asterisk/utils.h
    team/oej/iaxtrunkfix-1.4/main/acl.c
    team/oej/iaxtrunkfix-1.4/main/app.c
    team/oej/iaxtrunkfix-1.4/main/ast_expr2.c
    team/oej/iaxtrunkfix-1.4/main/ast_expr2f.c
    team/oej/iaxtrunkfix-1.4/main/asterisk.c
    team/oej/iaxtrunkfix-1.4/main/cdr.c
    team/oej/iaxtrunkfix-1.4/main/channel.c
    team/oej/iaxtrunkfix-1.4/main/cli.c
    team/oej/iaxtrunkfix-1.4/main/config.c
    team/oej/iaxtrunkfix-1.4/main/db.c
    team/oej/iaxtrunkfix-1.4/main/db1-ast/Makefile
    team/oej/iaxtrunkfix-1.4/main/dnsmgr.c
    team/oej/iaxtrunkfix-1.4/main/frame.c
    team/oej/iaxtrunkfix-1.4/main/http.c
    team/oej/iaxtrunkfix-1.4/main/image.c
    team/oej/iaxtrunkfix-1.4/main/loader.c
    team/oej/iaxtrunkfix-1.4/main/manager.c
    team/oej/iaxtrunkfix-1.4/main/netsock.c
    team/oej/iaxtrunkfix-1.4/main/pbx.c
    team/oej/iaxtrunkfix-1.4/main/rtp.c
    team/oej/iaxtrunkfix-1.4/main/translate.c
    team/oej/iaxtrunkfix-1.4/main/utils.c
    team/oej/iaxtrunkfix-1.4/pbx/ael/ael-test/ref.ael-test3
    team/oej/iaxtrunkfix-1.4/pbx/dundi-parser.c
    team/oej/iaxtrunkfix-1.4/pbx/pbx_ael.c
    team/oej/iaxtrunkfix-1.4/pbx/pbx_realtime.c
    team/oej/iaxtrunkfix-1.4/pbx/pbx_spool.c
    team/oej/iaxtrunkfix-1.4/res/res_adsi.c
    team/oej/iaxtrunkfix-1.4/res/res_agi.c
    team/oej/iaxtrunkfix-1.4/res/res_jabber.c
    team/oej/iaxtrunkfix-1.4/res/res_monitor.c
    team/oej/iaxtrunkfix-1.4/res/res_musiconhold.c
    team/oej/iaxtrunkfix-1.4/res/res_speech.c
    team/oej/iaxtrunkfix-1.4/sounds/Makefile
    team/oej/iaxtrunkfix-1.4/sounds/sounds.xml
    team/oej/iaxtrunkfix-1.4/utils/Makefile
    team/oej/iaxtrunkfix-1.4/utils/ael_main.c
    team/oej/iaxtrunkfix-1.4/utils/muted.c

Propchange: team/oej/iaxtrunkfix-1.4/
------------------------------------------------------------------------------
Binary property 'branch-1.2-blocked' - no diff available.

Propchange: team/oej/iaxtrunkfix-1.4/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.

Propchange: team/oej/iaxtrunkfix-1.4/
------------------------------------------------------------------------------
    svnmerge-blocked = /branches/1.2:46361

Propchange: team/oej/iaxtrunkfix-1.4/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Oct 30 14:46:42 2006
@@ -1,1 +1,1 @@
-/branches/1.4:1-44777
+/branches/1.4:1-46504

Modified: team/oej/iaxtrunkfix-1.4/CHANGES
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/CHANGES?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/CHANGES (original)
+++ team/oej/iaxtrunkfix-1.4/CHANGES Mon Oct 30 14:46:42 2006
@@ -6,28 +6,33 @@
           o Change the way CLI commands are structured.
           o Most commands are now <module> <verb> <args>
     * chan_h323 update
-    * multi-parking
     * RTP packetization
     * SLA (Shared Line Appearance) support
-    * T.38 Passthrough Support for faxing
+    * T.38 Passthrough Support for faxing in SIP
     * Generic channel jitterbuffer (spawned from RTP)
-    * VLDTMF for better DTMF compatibility
-    * Improved chan_iax2 scalability
+    * Variable Length DTMF for better DTMF compatibility
+    * Improved chan_iax2 scalability by using multithreading
     * AEL2 has replaced the original implementation of AEL. The "2" is removed. For more details, 
       read: http://www.voip-info.org/wiki/view/Asterisk+AEL2
-    * New sounds; English, Spanish, and French prompts, as well as music on hold files, in multiple Asterisk native formats.
+      AEL is no longer considered experimental.
+    * New sounds; English, Spanish, and French prompts, as well as music on hold files, in 
+      multiple Asterisk native formats.
     * IMAP storage of voicemail
-    * Jabber/GoogleTalk
+    * Jabber/GoogleTalk integration
     * New speech recognition API for interfacing to different Voice Recognition software packages
     * much more customizable and portable build system
           o also for asterisk-addons
     * Radius CDR logging
     * SNMP support
     * SMDI (Simplified Message Desk Interface) support
+    * Redesign of MusicOnHold configuration settings
     * Manager over HTTP
     * Significant chan_skinny updates
     * Significant chan_misdn updates
     * Improved SIP transfers
+    * SIP MWI subscription support
+    * Much improved support for SIP video
+    * Control over SIP transfers and subscriptions (enable/disable per device)
     * ChanSpy whisper mode (Whisper Paging)
     * Configurable language support for saying dates and times
     * Significant architecture improvements for memory usage and performance
@@ -46,6 +51,7 @@
     * Builtin mini HTTP server
     * Added support for Sigma Designs cards.
     * Frame header caching to reduce memory allocation/freeing
+    * Passthrough and record/playback support for G.722 wideband audio
     * using mpg123 to play MP3 files for music-on-hold will be deprecated in 1.4 (start using the "native support")
     * New Apps:
          1. AMD() ;; Answering Machine Detection
@@ -92,7 +98,7 @@
         17. SetRDNIS -- use the function CALLERID(rdnis) instead
         18. Sql_postgres -- was deprecated in 1.2, now removed
         19. Txtcidname -- use the function TXTCIDNAME instead
-    * New Funcs:
+    * New Dialplan Functions:
          1. ARRAY()
          2. BASE_64_DECODE()
          3. BASE_64_ENCODE()
@@ -154,11 +160,11 @@
         17. UserEvent() -- slight change in behavior. Read the description.
         18. VoiceMailMain() -- new a(#) option, goes to folder # directly.
         19. WaitForSilence() -- new optional 3rd arg, time delay before returning.
-    * Funcs that have changes to their interfaces:
+    * Functions that have changes to their interfaces:
          1. CDR -- new option: u
          2. LANGUAGE -- Deprecated. Use CHANNEL(language) instead.
          3. MUSICCLASS -- Deprecated. Use CHANNEL(musicclass) instead.
-    * Config File Changes:
+    * Configuration File Changes:
          1. NEW config files:
                1. amd.conf -- Answering Machine Detection parameters
                2. followme.conf -- parameters for the findme/followme call forwarding
@@ -230,7 +236,6 @@
                       o [my] entry added (Malaysia)
                       o [th] entry added (Thailand)
               11. manager.conf
-                      o displaysystemname variable added
                       o webenabled variable added
                       o httptimeout variable added
                       o timestampevents variable added
@@ -329,6 +334,6 @@
                       o JitterBuffer support added
     * Removed Codecs/Channels:
          1. codec_g723 was removed because the actual codec implementation it was designed to use is not distributable
-         2. chan_modem_* stuff is gone because the kernel support for those interfaces is old, buggy and unsupported
+         2. chan_modem_* and related modules are gone because the kernel support for those interfaces is old, buggy and unsupported
     * New Utils:
          1. aelparse -- compile .ael files outside of asterisk

Modified: team/oej/iaxtrunkfix-1.4/CREDITS
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/CREDITS?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/CREDITS (original)
+++ team/oej/iaxtrunkfix-1.4/CREDITS Mon Oct 30 14:46:42 2006
@@ -131,7 +131,7 @@
 Roy Sigurd Karlsbakk - providing funding for generic jitterbuffer development
 	roy at karlsbakk.net, Briiz Telecom AS
 
-Voop A/S, Nuvio Inc and Foniris Telecom A/S - funding for rewrite of SIP transfers
+Voop A/S, Nuvio Inc, Inotel S.A and Foniris Telecom A/S - funding for rewrite of SIP transfers
 
 Philippe Sultan - RADIUS CDR module
 	INRIA, http://www.inria.fr/

Modified: team/oej/iaxtrunkfix-1.4/LICENSE
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/LICENSE?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/LICENSE (original)
+++ team/oej/iaxtrunkfix-1.4/LICENSE Mon Oct 30 14:46:42 2006
@@ -4,6 +4,18 @@
 applies to all loadable Asterisk modules used on your system as well,
 except as defined below. The GPL (version 2) is included in this
 source tree in the file COPYING.
+
+This package also includes various components that are not part of
+Asterisk itself; these components are in the 'contrib' directory
+and its subdirectories. Most of these components are also
+distributed under the GPL version 2 as well, except for the following:
+
+contrib/firmware/iax/iaxy.bin:
+	This file is Copyright (C) Digium, Inc. and is licensed for
+	use with Digium IAXy hardware devices only. It can be
+	distributed freely as long as the distribution is in the
+	original form present in this package (not reformatted or
+	modified).
 
 Digium, Inc. (formerly Linux Support Services) holds copyright
 and/or sufficient licenses to all components of the Asterisk

Modified: team/oej/iaxtrunkfix-1.4/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/Makefile?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/Makefile (original)
+++ team/oej/iaxtrunkfix-1.4/Makefile Mon Oct 30 14:46:42 2006
@@ -309,7 +309,7 @@
 	@ASTCFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AST_LIBS="$(AST_LIBS)" $(MAKE) --no-print-directory -C $@ SUBDIR=$@ all
 
 $(OTHER_SUBDIRS):
-	@ASTCFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" $(MAKE) --no-print-directory -C $@ SUBDIR=$@ all
+	@ASTCFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AUDIO_LIBS="$(AUDIO_LIBS)" $(MAKE) --no-print-directory -C $@ SUBDIR=$@ all
 
 defaults.h: makeopts
 	@build_tools/make_defaults_h > $@.tmp
@@ -434,10 +434,12 @@
 	$(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
 	$(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
 	$(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
-	$(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
+	if [ -f contrib/firmware/iax/iaxy.bin ] ; then \
+		$(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
+	fi
 
 $(SUBDIRS_INSTALL):
-	@$(MAKE) -C $(@:-install=) install
+	@DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" $(MAKE) -C $(@:-install=) install
 
 NEWMODS=$(notdir $(wildcard */*.so))
 OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))

Modified: team/oej/iaxtrunkfix-1.4/apps/app_chanspy.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_chanspy.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_chanspy.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_chanspy.c Mon Oct 30 14:46:42 2006
@@ -268,6 +268,12 @@
 	ast_mutex_init(&csth.spy.lock);
 	csth.volfactor = *volfactor;
 	set_volume(chan, &csth);
+	if (csth.volfactor) {
+		ast_set_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
+		csth.spy.read_vol_adjustment = csth.volfactor;
+		ast_set_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
+		csth.spy.write_vol_adjustment = csth.volfactor;
+	}
 	csth.fd = fd;
 	
 	if (start_spying(spyee, chan, &csth.spy)) {
@@ -359,6 +365,15 @@
 				ast_verbose(VERBOSE_PREFIX_3 "Setting spy volume on %s to %d\n", chan->name, *volfactor);
 			csth.volfactor = *volfactor;
 			set_volume(chan, &csth);
+			if (csth.volfactor) {
+				ast_set_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
+				csth.spy.read_vol_adjustment = csth.volfactor;
+				ast_set_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
+				csth.spy.write_vol_adjustment = csth.volfactor;
+			} else {
+				ast_clear_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
+				ast_clear_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
+			}
 		} else if (res >= '0' && res <= '9') {
 			inp[x++] = res;
 		}

Modified: team/oej/iaxtrunkfix-1.4/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_dial.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_dial.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_dial.c Mon Oct 30 14:46:42 2006
@@ -456,6 +456,8 @@
 						       OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
 						       OPT_CALLEE_PARK | OPT_CALLER_PARK |
 						       DIAL_NOFORWARDHTML);
+					ast_copy_string(c->context, "", sizeof(c->context));
+					ast_copy_string(c->exten, "", sizeof(c->exten));
 				}
 				continue;
 			}
@@ -575,6 +577,8 @@
 							       OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
 							       OPT_CALLEE_PARK | OPT_CALLER_PARK |
 							       DIAL_NOFORWARDHTML);
+						ast_copy_string(c->context, "", sizeof(c->context));
+						ast_copy_string(c->exten, "", sizeof(c->exten));
 						/* Setup RTP early bridge if appropriate */
 						ast_rtp_early_bridge(in, peer);
 					}
@@ -1170,6 +1174,10 @@
 		if (outbound_group)
 			ast_app_group_set_channel(tmp->chan, outbound_group);
 
+		/* Inherit context and extension */
+		ast_copy_string(tmp->chan->context, chan->context, sizeof(tmp->chan->context));
+		ast_copy_string(tmp->chan->exten, chan->exten, sizeof(tmp->chan->exten));
+
 		/* Place the call, but don't wait on the answer */
 		res = ast_call(tmp->chan, numsubst, 0);
 

Modified: team/oej/iaxtrunkfix-1.4/apps/app_directed_pickup.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_directed_pickup.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_directed_pickup.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_directed_pickup.c Mon Oct 30 14:46:42 2006
@@ -41,6 +41,7 @@
 #include "asterisk/module.h"
 #include "asterisk/lock.h"
 #include "asterisk/app.h"
+#include "asterisk/options.h"
 
 #define PICKUPMARK "PICKUPMARK"
 
@@ -50,101 +51,114 @@
 "  Pickup(extension[@context][&extension2 at context...]): This application can pickup any ringing channel\n"
 "that is calling the specified extension. If no context is specified, the current\n"
 "context will be used. If you use the special string \"PICKUPMARK\" for the context parameter, for example\n"
-"10 at PICKUPMARK, this application tries to find a channel which has defined a channel variable with the same context\n"
+"10 at PICKUPMARK, this application tries to find a channel which has defined a channel variable with the same content\n"
 "as \"extension\".";
 
+/* Perform actual pickup between two channels */
+static int pickup_do(struct ast_channel *chan, struct ast_channel *target)
+{
+	int res = 0;
 
+	if (option_debug)
+		ast_log(LOG_DEBUG, "Call pickup on '%s' by '%s'\n", target->name, chan->name);
+
+	if ((res = ast_answer(chan))) {
+		ast_log(LOG_WARNING, "Unable to answer '%s'\n", chan->name);
+		return -1;
+	}
+
+	if ((res = ast_queue_control(chan, AST_CONTROL_ANSWER))) {
+		ast_log(LOG_WARNING, "Unable to queue answer on '%s'\n", chan->name);
+		return -1;
+	}
+
+	if ((res = ast_channel_masquerade(target, chan))) {
+		ast_log(LOG_WARNING, "Unable to masquerade '%s' into '%s'\n", chan->name, target->name);
+		return -1;
+	}
+
+	return res;
+}
+
+/* Helper function that determines whether a channel is capable of being picked up */
+static int can_pickup(struct ast_channel *chan)
+{
+	if (!chan->pbx && (chan->_state == AST_STATE_RINGING || chan->_state == AST_STATE_RING))
+		return 1;
+	else
+		return 0;
+}
+
+/* Attempt to pick up specified extension with context */
+static int pickup_by_exten(struct ast_channel *chan, char *exten, char *context)
+{
+	int res = -1;
+	struct ast_channel *target = NULL;
+
+	while ((target = ast_channel_walk_locked(target))) {
+		if (!strcasecmp(target->exten, exten) &&
+		    !strcasecmp(target->context, context) &&
+		    can_pickup(target)) {
+			res = pickup_do(chan, target);
+			ast_channel_unlock(target);
+			break;
+		}
+		ast_channel_unlock(target);
+	}
+
+	return res;
+}
+
+/* Attempt to pick up specified mark */
+static int pickup_by_mark(struct ast_channel *chan, char *mark)
+{
+	int res = -1;
+	const char *tmp = NULL;
+	struct ast_channel *target = NULL;
+
+	while ((target = ast_channel_walk_locked(target))) {
+		if ((tmp = pbx_builtin_getvar_helper(target, PICKUPMARK)) &&
+		    !strcasecmp(tmp, mark) &&
+		    can_pickup(target)) {
+			res = pickup_do(chan, target);
+			ast_channel_unlock(target);
+			break;
+		}
+		ast_channel_unlock(target);
+	}
+
+	return res;
+}
+
+/* Main application entry point */
 static int pickup_exec(struct ast_channel *chan, void *data)
 {
 	int res = 0;
 	struct ast_module_user *u = NULL;
-	struct ast_channel *origin = NULL, *target = NULL;
-	char *tmp = NULL, *exten = NULL, *context = NULL, *rest=data;
-	char workspace[256] = "";
-	const char *tmp2 = NULL;
+	char *tmp = ast_strdupa(data);
+	char *exten = NULL, *context = NULL;
 
 	if (ast_strlen_zero(data)) {
-		ast_log(LOG_WARNING, "Pickup requires an argument (extension) !\n");
+		ast_log(LOG_WARNING, "Pickup requires an argument (extension)!\n");
 		return -1;	
 	}
 
 	u = ast_module_user_add(chan);
 	
-	while (!target && (exten = rest) ) {
-		res = 0;
-		rest = strchr(exten, '&');
-		if (rest)
-			*rest++ = 0;
+	/* Parse extension (and context if there) */
+	while (!ast_strlen_zero(tmp) && (exten = strsep(&tmp, "&"))) {
+		if ((context = strchr(exten, '@')))
+			*context++ = '\0';
+		if (context && !strcasecmp(context, PICKUPMARK)) {
+			if (!pickup_by_mark(chan, exten))
+				break;
+		} else {
+			if (!pickup_by_exten(chan, exten, context ? context : chan->context))
+				break;
+		}
+		ast_log(LOG_NOTICE, "No target channel found for %s.\n", exten);
+	}
 
-		/* Get the extension and context if present */
-		context = strchr(exten, '@');
-		if (context)
-			*context++ = '\0';
-
-		/* If the context is the pickup mark, iterate through all channels finding the right origin one */
-		if (context && !strcmp(context, PICKUPMARK)) {
-			while ((origin = ast_channel_walk_locked(origin))) {
-				if (origin) {
-					tmp2 = pbx_builtin_getvar_helper(origin, PICKUPMARK);
-					if (tmp2 && !strcmp(tmp2, exten))
-						break;
-					ast_mutex_unlock(&origin->lock);
-				}
-			}
-		} else {
-			/* Use the classic mode of searching */
-			origin = ast_get_channel_by_exten_locked(exten, context);
-		}
-
-		if (origin) {
-			ast_cdr_getvar(origin->cdr, "dstchannel", &tmp, workspace,
-					sizeof(workspace), 0, 0);
-			if (tmp) {
-				/* We have a possible channel... now we need to find it! */
-				target = ast_get_channel_by_name_locked(tmp);
-			} else {
-				ast_log(LOG_NOTICE, "No target channel found for %s.\n", exten);
-				res = -1;
-			}
-			ast_mutex_unlock(&origin->lock);
-
-		} else {
-			ast_log(LOG_DEBUG, "No originating channel found.\n");
-		}
-
-		if (res)
-			continue;
-
-		if (target && (!target->pbx) && ((target->_state == AST_STATE_RINGING) || (target->_state == AST_STATE_RING) ) ) {
-			ast_log(LOG_DEBUG, "Call pickup on chan '%s' by '%s'\n", target->name,
-					chan->name);
-			res = ast_answer(chan);
-			if (res) {
-				ast_log(LOG_WARNING, "Unable to answer '%s'\n", chan->name);
-				res = -1;
-				break;
-			}
-			res = ast_queue_control(chan, AST_CONTROL_ANSWER);
-			if (res) {
-				ast_log(LOG_WARNING, "Unable to queue answer on '%s'\n",
-						chan->name);
-				res = -1;
-				break;
-			}
-			res = ast_channel_masquerade(target, chan);
-			if (res) {
-				ast_log(LOG_WARNING, "Unable to masquerade '%s' into '%s'\n", chan->name, target->name);
-				res = -1;
-				break;
-			}
-		} else {
-			ast_log(LOG_NOTICE, "No call pickup possible for %s...\n", exten);
-			res = -1;
-		}
-	}
-	if (target) 
-		ast_mutex_unlock(&target->lock);
-	
 	ast_module_user_remove(u);
 
 	return res;

Modified: team/oej/iaxtrunkfix-1.4/apps/app_externalivr.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_externalivr.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_externalivr.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_externalivr.c Mon Oct 30 14:46:42 2006
@@ -322,7 +322,7 @@
 			close(i);
 		execv(argv[0], argv);
 		fprintf(stderr, "Failed to execute '%s': %s\n", argv[0], strerror(errno));
-		exit(1);
+		_exit(1);
 	} else {
 		/* parent process */
 		int child_events_fd = child_stdin[1];
@@ -445,7 +445,7 @@
 					continue;
 
 				if (input[0] == 'S') {
-					if (ast_fileexists(&input[2], NULL, NULL) == -1) {
+					if (ast_fileexists(&input[2], NULL, u->chan->language) == -1) {
 						ast_chan_log(LOG_WARNING, chan, "Unknown file requested '%s'\n", &input[2]);
 						send_child_event(child_events, 'Z', NULL, chan);
 						strcpy(&input[2], "exception");
@@ -464,7 +464,7 @@
 						AST_LIST_INSERT_TAIL(&u->playlist, entry, list);
 					AST_LIST_UNLOCK(&u->playlist);
 				} else if (input[0] == 'A') {
-					if (ast_fileexists(&input[2], NULL, NULL) == -1) {
+					if (ast_fileexists(&input[2], NULL, u->chan->language) == -1) {
 						ast_chan_log(LOG_WARNING, chan, "Unknown file requested '%s'\n", &input[2]);
 						send_child_event(child_events, 'Z', NULL, chan);
 						strcpy(&input[2], "exception");

Modified: team/oej/iaxtrunkfix-1.4/apps/app_getcpeid.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_getcpeid.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_getcpeid.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_getcpeid.c Mon Oct 30 14:46:42 2006
@@ -71,21 +71,20 @@
 	int gotgeometry = 0;
 	int gotcpeid = 0;
 	int width, height, buttons;
-	char data[4][80];
-	char *stuff[4];
+	char *data[4];
+	unsigned int x;
 
 	u = ast_module_user_add(chan);
-	stuff[0] = data[0];
-	stuff[1] = data[1];
-	stuff[2] = data[2];
-	stuff[3] = data[3];
-	memset(data, 0, sizeof(data));
-	strncpy(stuff[0], "** CPE Info **", sizeof(data[0]) - 1);
-	strncpy(stuff[1], "Identifying CPE...", sizeof(data[1]) - 1);
-	strncpy(stuff[2], "Please wait...", sizeof(data[2]) - 1);
+
+	for (x = 0; x < 4; x++)
+		data[x] = alloca(80);
+
+	strcpy(data[0], "** CPE Info **");
+	strcpy(data[1], "Identifying CPE...");
+	strcpy(data[2], "Please wait...");
 	res = ast_adsi_load_session(chan, NULL, 0, 1);
 	if (res > 0) {
-		cpeid_setstatus(chan, stuff, 0);
+		cpeid_setstatus(chan, data, 0);
 		res = ast_adsi_get_cpeid(chan, cpeid, 0);
 		if (res > 0) {
 			gotcpeid = 1;
@@ -93,9 +92,9 @@
 				ast_verbose(VERBOSE_PREFIX_3 "Got CPEID of '%02x:%02x:%02x:%02x' on '%s'\n", cpeid[0], cpeid[1], cpeid[2], cpeid[3], chan->name);
 		}
 		if (res > -1) {
-			strncpy(stuff[1], "Measuring CPE...", sizeof(data[1]) - 1);
-			strncpy(stuff[2], "Please wait...", sizeof(data[2]) - 1);
-			cpeid_setstatus(chan, stuff, 0);
+			strcpy(data[1], "Measuring CPE...");
+			strcpy(data[2], "Please wait...");
+			cpeid_setstatus(chan, data, 0);
 			res = ast_adsi_get_cpeinfo(chan, &width, &height, &buttons, 0);
 			if (res > -1) {
 				if (option_verbose > 2)
@@ -105,15 +104,15 @@
 		}
 		if (res > -1) {
 			if (gotcpeid)
-				snprintf(stuff[1], sizeof(data[1]), "CPEID: %02x:%02x:%02x:%02x", cpeid[0], cpeid[1], cpeid[2], cpeid[3]);
+				snprintf(data[1], 80, "CPEID: %02x:%02x:%02x:%02x", cpeid[0], cpeid[1], cpeid[2], cpeid[3]);
 			else
-				strncpy(stuff[1], "CPEID Unknown", sizeof(data[1]) - 1);
+				strcpy(data[1], "CPEID Unknown");
 			if (gotgeometry) 
-				snprintf(stuff[2], sizeof(data[2]), "Geom: %dx%d, %d buttons", width, height, buttons);
+				snprintf(data[2], 80, "Geom: %dx%d, %d buttons", width, height, buttons);
 			else
-				strncpy(stuff[2], "Geometry unknown", sizeof(data[2]) - 1);
-			strncpy(stuff[3], "Press # to exit", sizeof(data[3]) - 1);
-			cpeid_setstatus(chan, stuff, 1);
+				strcpy(data[2], "Geometry unknown");
+			strcpy(data[3], "Press # to exit");
+			cpeid_setstatus(chan, data, 1);
 			for(;;) {
 				res = ast_waitfordigit(chan, 1000);
 				if (res < 0)

Modified: team/oej/iaxtrunkfix-1.4/apps/app_ices.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_ices.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_ices.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_ices.c Mon Oct 30 14:46:42 2006
@@ -141,7 +141,7 @@
 		return -1;
 	}
 	if (((char *)data)[0] == '/')
-		strncpy(filename, (char *)data, sizeof(filename) - 1);
+		ast_copy_string(filename, (char *) data, sizeof(filename));
 	else
 		snprintf(filename, sizeof(filename), "%s/%s", (char *)ast_config_AST_CONFIG_DIR, (char *)data);
 	/* Placeholder for options */		

Modified: team/oej/iaxtrunkfix-1.4/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_meetme.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_meetme.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_meetme.c Mon Oct 30 14:46:42 2006
@@ -274,9 +274,9 @@
 "      's' -- Lower entire conference speaking volume\n"
 "      'S' -- Raise entire conference speaking volume\n"
 "      't' -- Lower one user's talk volume\n"
-"      'T' -- Lower all users talk volume\n"
+"      'T' -- Raise one user's talk volume\n"
 "      'u' -- Lower one user's listen volume\n"
-"      'U' -- Lower all users listen volume\n"
+"      'U' -- Raise one user's listen volume\n"
 "      'v' -- Lower entire conference listening volume\n"
 "      'V' -- Raise entire conference listening volume\n"
 "";

Modified: team/oej/iaxtrunkfix-1.4/apps/app_page.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_page.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_page.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_page.c Mon Oct 30 14:46:42 2006
@@ -60,7 +60,7 @@
 "caller is dumped into the conference as a speaker and the room is\n"
 "destroyed when the original caller leaves.  Valid options are:\n"
 "        d - full duplex audio\n"
-"	 q - quiet, do not play beep to caller\n"
+"        q - quiet, do not play beep to caller\n"
 "        r - record the page into a file (see 'r' for app_meetme)\n";
 
 

Modified: team/oej/iaxtrunkfix-1.4/apps/app_parkandannounce.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_parkandannounce.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_parkandannounce.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_parkandannounce.c Mon Oct 30 14:46:42 2006
@@ -78,13 +78,13 @@
 {
 	int res=0;
 	char *return_context;
-	int l, lot, timeout = 0, dres;
+	int lot, timeout = 0, dres;
 	char *working, *context, *exten, *priority, *dial, *dialtech, *dialstr;
 	char *template, *tpl_working, *tpl_current;
 	char *tmp[100];
 	char buf[13];
 	int looptemp=0,i=0;
-	char *s,*orig_s;
+	char *s;
 
 	struct ast_channel *dchan;
 	struct outgoing_helper oh;
@@ -99,18 +99,11 @@
   
 	u = ast_module_user_add(chan);
 
-	l=strlen(data)+2;	
-	if (!(orig_s = ast_malloc(l))) {
-		ast_module_user_remove(u);
-		return -1;
-	}
-	s=orig_s;
-	strncpy(s,data,l);
+	s = ast_strdupa(data);
 
 	template=strsep(&s,"|");
 	if(! template) {
 		ast_log(LOG_WARNING, "PARK: An announce template must be defined\n");
-		free(orig_s);
 		ast_module_user_remove(u);
 		return -1;
 	}
@@ -122,7 +115,6 @@
 	dial=strsep(&s, "|");
 	if(!dial) {
 		ast_log(LOG_WARNING, "PARK: A dial resource must be specified i.e: Console/dsp or Zap/g1/5551212\n");
-		free(orig_s);
 		ast_module_user_remove(u);
 		return -1;
 	} else {
@@ -155,16 +147,15 @@
 	}
 	if(atoi(priority) < 0) {
 		ast_log(LOG_WARNING, "Priority '%s' must be a number > 0\n", priority);
-		free(orig_s);
 		ast_module_user_remove(u);
 		return -1;
 	}
 	/* At this point we have a priority and maybe an extension and a context */
 	chan->priority = atoi(priority);
 	if (exten)
-		strncpy(chan->exten, exten, sizeof(chan->exten)-1);
+		ast_copy_string(chan->exten, exten, sizeof(chan->exten));
 	if (context)
-		strncpy(chan->context, context, sizeof(chan->context)-1);
+		ast_copy_string(chan->context, context, sizeof(chan->context));
 	} else {  /* increment the priority by default*/
 		chan->priority++;
 	}
@@ -202,13 +193,11 @@
 				ast_verbose(VERBOSE_PREFIX_4 "Channel %s was never answered.\n", dchan->name);
         			ast_log(LOG_WARNING, "PARK: Channel %s was never answered for the announce.\n", dchan->name);
 			ast_hangup(dchan);
-			free(orig_s);
 			ast_module_user_remove(u);
 			return -1;
 		}
 	} else {
 		ast_log(LOG_WARNING, "PARK: Unable to allocate announce channel.\n");
-		free(orig_s);
 		ast_module_user_remove(u);
 		return -1; 
 	}
@@ -245,7 +234,6 @@
 
 	ast_stopstream(dchan);  
 	ast_hangup(dchan);
-	free(orig_s);
 	
 	ast_module_user_remove(u);
 	

Modified: team/oej/iaxtrunkfix-1.4/apps/app_playback.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_playback.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_playback.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_playback.c Mon Oct 30 14:46:42 2006
@@ -155,6 +155,9 @@
 	ast_log(LOG_WARNING, "string <%s> depth <%d>\n", s, depth);
 	if (depth++ > 10) {
 		ast_log(LOG_WARNING, "recursion too deep, exiting\n");
+		return -1;
+	} else if (!say_cfg) {
+		ast_log(LOG_WARNING, "no say.conf, cannot spell '%s'\n", s);
 		return -1;
 	}
 
@@ -253,11 +256,6 @@
         int audiofd, int ctrlfd)
 {
         say_args_t a = { chan, ints, lang, audiofd, ctrlfd };
-  
-        if (!say_cfg) {
-                ast_log(LOG_WARNING, "no say.conf, cannot spell '%s'\n", string);
-                return -1;   
-        }
         return do_say(&a, string, options, 0);
 }
 

Modified: team/oej/iaxtrunkfix-1.4/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_queue.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_queue.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_queue.c Mon Oct 30 14:46:42 2006
@@ -776,10 +776,6 @@
    extra fields in the tables. */
 static void queue_set_param(struct call_queue *q, const char *param, const char *val, int linenum, int failunknown)
 {
-	int i = 0;
-	char *c, *lastc;
-	char buff[80];
-
 	if (!strcasecmp(param, "musicclass") || 
 		!strcasecmp(param, "music") || !strcasecmp(param, "musiconhold")) {
 		ast_copy_string(q->moh, val, sizeof(q->moh));
@@ -840,22 +836,18 @@
 		else
 			q->announceholdtime = 0;
 	} else if (!strcasecmp(param, "periodic-announce")) {
-		if (strchr(val,'|')) {
-			lastc = (char *)val;
-			while ((c = strchr(lastc,'|'))) {
-				if (i > MAX_PERIODIC_ANNOUNCEMENTS)
+		if (strchr(val, '|')) {
+			char *s, *buf = ast_strdupa(val);
+			unsigned int i = 0;
+
+			while ((s = strsep(&buf, "|"))) {
+				ast_copy_string(q->sound_periodicannounce[i], s, sizeof(q->sound_periodicannounce[i]));
+				i++;
+				if (i == MAX_PERIODIC_ANNOUNCEMENTS)
 					break;
-				strncpy(buff, lastc, abs(lastc - c));
-				buff[abs(lastc - c)] = '\0';
-				ast_copy_string(q->sound_periodicannounce[i], buff, sizeof(q->sound_periodicannounce[i]));
-				lastc = (c + 1);
-				i++;
-			}
-			if (strlen(lastc)) {
-				ast_copy_string(q->sound_periodicannounce[i], lastc, sizeof(q->sound_periodicannounce[i]));
 			}
 		} else {
-			ast_copy_string(q->sound_periodicannounce[i], val, sizeof(q->sound_periodicannounce[i]));
+			ast_copy_string(q->sound_periodicannounce[0], val, sizeof(q->sound_periodicannounce[0]));
 		}
 	} else if (!strcasecmp(param, "periodic-announce-frequency")) {
 		q->periodicannouncefrequency = atoi(val);
@@ -3295,7 +3287,7 @@
 	struct queue_ent qe;
 	
 	if (ast_strlen_zero(data)) {
-		ast_log(LOG_WARNING, "Queue requires an argument: queuename[|options[|URL][|announceoverride][|timeout]]\n");
+		ast_log(LOG_WARNING, "Queue requires an argument: queuename[|options[|URL[|announceoverride[|timeout[|agi]]]]]\n");
 		return -1;
 	}
 	

Modified: team/oej/iaxtrunkfix-1.4/apps/app_record.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_record.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_record.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_record.c Mon Oct 30 14:46:42 2006
@@ -212,7 +212,7 @@
 		} while (ast_fileexists(tmp, ext, chan->language) > 0);
 		pbx_builtin_setvar_helper(chan, "RECORDED_FILE", tmp);
 	} else
-		strncpy(tmp, filename, sizeof(tmp)-1);
+		ast_copy_string(tmp, filename, sizeof(tmp));
 	/* end of routine mentioned */
 	
 	

Modified: team/oej/iaxtrunkfix-1.4/apps/app_rpt.c
URL: http://svn.digium.com/view/asterisk/team/oej/iaxtrunkfix-1.4/apps/app_rpt.c?rev=46505&r1=46504&r2=46505&view=diff
==============================================================================
--- team/oej/iaxtrunkfix-1.4/apps/app_rpt.c (original)
+++ team/oej/iaxtrunkfix-1.4/apps/app_rpt.c Mon Oct 30 14:46:42 2006
@@ -1425,7 +1425,7 @@
 					return RESULT_FAILURE;
 				}
 				memset(s, 0, sizeof(struct rpt_lstat));
-				strncpy(s->name, l->name, MAXREMSTR - 1);
+				ast_copy_string(s->name, l->name, MAXREMSTR);
 				pbx_substitute_variables_helper(l->chan, "${IAXPEER(CURRENTCHANNEL)}", s->peer, MAXPEERSTR - 1);
 				s->mode = l->mode;
 				s->outbound = l->outbound;
@@ -2606,8 +2606,7 @@
 		}
 	}
 	else if ((mode == ARB_ALPHA) || (mode == REV_PATCH)) {
-		strncpy(tele->param, (char *) data, TELEPARAMSIZE - 1);

[... 7863 lines stripped ...]


More information about the svn-commits mailing list