[svn-commits] moy: branch moy/mfcr2 r118254 - in /team/moy/mfcr2: ./ apps/ build_tools/ cdr...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sun May 25 16:11:56 CDT 2008


Author: moy
Date: Sun May 25 16:11:54 2008
New Revision: 118254

URL: http://svn.digium.com/view/asterisk?view=rev&rev=118254
Log:
merged trunk revision 118253

Added:
    team/moy/mfcr2/configs/pbx_realtime.conf
      - copied unchanged from r118253, trunk/configs/pbx_realtime.conf
    team/moy/mfcr2/contrib/scripts/install_prereq
      - copied unchanged from r118253, trunk/contrib/scripts/install_prereq
    team/moy/mfcr2/doc/api-1.6.0-changes.odt
      - copied unchanged from r118253, trunk/doc/api-1.6.0-changes.odt
    team/moy/mfcr2/doc/cli.txt
      - copied unchanged from r118253, trunk/doc/cli.txt
    team/moy/mfcr2/funcs/func_speex.c
      - copied unchanged from r118253, trunk/funcs/func_speex.c
    team/moy/mfcr2/include/asterisk/dlinkedlists.h
      - copied unchanged from r118253, trunk/include/asterisk/dlinkedlists.h
    team/moy/mfcr2/include/asterisk/taskprocessor.h
      - copied unchanged from r118253, trunk/include/asterisk/taskprocessor.h
    team/moy/mfcr2/main/taskprocessor.c
      - copied unchanged from r118253, trunk/main/taskprocessor.c
Removed:
    team/moy/mfcr2/contrib/scripts/postgres_cdr.sql
Modified:
    team/moy/mfcr2/   (props changed)
    team/moy/mfcr2/CHANGES
    team/moy/mfcr2/CREDITS
    team/moy/mfcr2/Makefile
    team/moy/mfcr2/Makefile.rules
    team/moy/mfcr2/UPGRADE.txt
    team/moy/mfcr2/acinclude.m4
    team/moy/mfcr2/apps/app_alarmreceiver.c
    team/moy/mfcr2/apps/app_chanisavail.c
    team/moy/mfcr2/apps/app_chanspy.c
    team/moy/mfcr2/apps/app_dial.c
    team/moy/mfcr2/apps/app_disa.c
    team/moy/mfcr2/apps/app_dumpchan.c
    team/moy/mfcr2/apps/app_externalivr.c
    team/moy/mfcr2/apps/app_festival.c
    team/moy/mfcr2/apps/app_followme.c
    team/moy/mfcr2/apps/app_ices.c
    team/moy/mfcr2/apps/app_jack.c
    team/moy/mfcr2/apps/app_macro.c
    team/moy/mfcr2/apps/app_meetme.c
    team/moy/mfcr2/apps/app_milliwatt.c
    team/moy/mfcr2/apps/app_minivm.c
    team/moy/mfcr2/apps/app_morsecode.c
    team/moy/mfcr2/apps/app_mp3.c
    team/moy/mfcr2/apps/app_nbscat.c
    team/moy/mfcr2/apps/app_queue.c
    team/moy/mfcr2/apps/app_read.c
    team/moy/mfcr2/apps/app_readexten.c
    team/moy/mfcr2/apps/app_rpt.c
    team/moy/mfcr2/apps/app_skel.c
    team/moy/mfcr2/apps/app_sms.c
    team/moy/mfcr2/apps/app_speech_utils.c
    team/moy/mfcr2/apps/app_stack.c
    team/moy/mfcr2/apps/app_test.c
    team/moy/mfcr2/apps/app_voicemail.c
    team/moy/mfcr2/apps/app_waituntil.c
    team/moy/mfcr2/apps/app_while.c
    team/moy/mfcr2/apps/app_zapbarge.c
    team/moy/mfcr2/apps/app_zapscan.c
    team/moy/mfcr2/build_tools/make_buildopts_h
    team/moy/mfcr2/build_tools/menuselect-deps.in
    team/moy/mfcr2/cdr/cdr_csv.c
    team/moy/mfcr2/cdr/cdr_pgsql.c
    team/moy/mfcr2/channels/Makefile
    team/moy/mfcr2/channels/chan_agent.c
    team/moy/mfcr2/channels/chan_alsa.c
    team/moy/mfcr2/channels/chan_console.c
    team/moy/mfcr2/channels/chan_gtalk.c
    team/moy/mfcr2/channels/chan_h323.c
    team/moy/mfcr2/channels/chan_iax2.c
    team/moy/mfcr2/channels/chan_jingle.c
    team/moy/mfcr2/channels/chan_local.c
    team/moy/mfcr2/channels/chan_mgcp.c
    team/moy/mfcr2/channels/chan_misdn.c
    team/moy/mfcr2/channels/chan_nbs.c
    team/moy/mfcr2/channels/chan_oss.c
    team/moy/mfcr2/channels/chan_phone.c
    team/moy/mfcr2/channels/chan_sip.c
    team/moy/mfcr2/channels/chan_skinny.c
    team/moy/mfcr2/channels/chan_unistim.c
    team/moy/mfcr2/channels/chan_usbradio.c
    team/moy/mfcr2/channels/chan_vpb.cc
    team/moy/mfcr2/channels/chan_zap.c
    team/moy/mfcr2/channels/console_gui.c
    team/moy/mfcr2/channels/console_video.c
    team/moy/mfcr2/channels/h323/ast_h323.cxx
    team/moy/mfcr2/channels/iax2-parser.c
    team/moy/mfcr2/channels/iax2-parser.h
    team/moy/mfcr2/channels/iax2.h
    team/moy/mfcr2/channels/xpmr/sinetabx.h
    team/moy/mfcr2/channels/xpmr/xpmr.c
    team/moy/mfcr2/channels/xpmr/xpmr.h
    team/moy/mfcr2/channels/xpmr/xpmr_coef.h
    team/moy/mfcr2/codecs/codec_a_mu.c
    team/moy/mfcr2/codecs/codec_adpcm.c
    team/moy/mfcr2/codecs/codec_alaw.c
    team/moy/mfcr2/codecs/codec_g722.c
    team/moy/mfcr2/codecs/codec_g726.c
    team/moy/mfcr2/codecs/codec_gsm.c
    team/moy/mfcr2/codecs/codec_lpc10.c
    team/moy/mfcr2/codecs/codec_resample.c
    team/moy/mfcr2/codecs/codec_speex.c
    team/moy/mfcr2/codecs/codec_ulaw.c
    team/moy/mfcr2/codecs/codec_zap.c
    team/moy/mfcr2/configs/jabber.conf.sample
    team/moy/mfcr2/configs/oss.conf.sample
    team/moy/mfcr2/configs/queues.conf.sample
    team/moy/mfcr2/configs/sip.conf.sample
    team/moy/mfcr2/configs/voicemail.conf.sample
    team/moy/mfcr2/configs/zapata.conf.sample
    team/moy/mfcr2/configure
    team/moy/mfcr2/configure.ac
    team/moy/mfcr2/contrib/init.d/rc.debian.asterisk
    team/moy/mfcr2/contrib/init.d/rc.gentoo.asterisk
    team/moy/mfcr2/contrib/init.d/rc.mandrake.asterisk
    team/moy/mfcr2/contrib/init.d/rc.redhat.asterisk
    team/moy/mfcr2/contrib/init.d/rc.slackware.asterisk
    team/moy/mfcr2/contrib/init.d/rc.suse.asterisk
    team/moy/mfcr2/contrib/scripts/asterisk.ldap-schema
    team/moy/mfcr2/contrib/scripts/asterisk.ldif
    team/moy/mfcr2/contrib/scripts/get_ilbc_source.sh
    team/moy/mfcr2/contrib/scripts/safe_asterisk
    team/moy/mfcr2/doc/externalivr.txt
    team/moy/mfcr2/doc/manager_1_1.txt
    team/moy/mfcr2/doc/smdi.txt
    team/moy/mfcr2/doc/tex/channelvariables.tex
    team/moy/mfcr2/formats/format_g723.c
    team/moy/mfcr2/formats/format_g726.c
    team/moy/mfcr2/formats/format_g729.c
    team/moy/mfcr2/formats/format_gsm.c
    team/moy/mfcr2/formats/format_h263.c
    team/moy/mfcr2/formats/format_h264.c
    team/moy/mfcr2/formats/format_ilbc.c
    team/moy/mfcr2/formats/format_jpeg.c
    team/moy/mfcr2/formats/format_ogg_vorbis.c
    team/moy/mfcr2/formats/format_pcm.c
    team/moy/mfcr2/formats/format_sln.c
    team/moy/mfcr2/formats/format_sln16.c
    team/moy/mfcr2/formats/format_vox.c
    team/moy/mfcr2/formats/format_wav.c
    team/moy/mfcr2/formats/format_wav_gsm.c
    team/moy/mfcr2/funcs/func_enum.c
    team/moy/mfcr2/funcs/func_timeout.c
    team/moy/mfcr2/include/asterisk/_private.h
    team/moy/mfcr2/include/asterisk/app.h
    team/moy/mfcr2/include/asterisk/audiohook.h
    team/moy/mfcr2/include/asterisk/autoconfig.h.in
    team/moy/mfcr2/include/asterisk/channel.h
    team/moy/mfcr2/include/asterisk/compiler.h
    team/moy/mfcr2/include/asterisk/config.h
    team/moy/mfcr2/include/asterisk/enum.h
    team/moy/mfcr2/include/asterisk/frame.h
    team/moy/mfcr2/include/asterisk/lock.h
    team/moy/mfcr2/include/asterisk/logger.h
    team/moy/mfcr2/include/asterisk/manager.h
    team/moy/mfcr2/include/asterisk/pbx.h
    team/moy/mfcr2/include/asterisk/res_odbc.h
    team/moy/mfcr2/include/asterisk/rtp.h
    team/moy/mfcr2/include/asterisk/sched.h
    team/moy/mfcr2/include/asterisk/strings.h
    team/moy/mfcr2/include/asterisk/utils.h
    team/moy/mfcr2/main/Makefile
    team/moy/mfcr2/main/abstract_jb.c
    team/moy/mfcr2/main/app.c
    team/moy/mfcr2/main/asterisk.c
    team/moy/mfcr2/main/audiohook.c
    team/moy/mfcr2/main/autoservice.c
    team/moy/mfcr2/main/channel.c
    team/moy/mfcr2/main/cli.c
    team/moy/mfcr2/main/config.c
    team/moy/mfcr2/main/dial.c
    team/moy/mfcr2/main/dsp.c
    team/moy/mfcr2/main/enum.c
    team/moy/mfcr2/main/event.c
    team/moy/mfcr2/main/features.c
    team/moy/mfcr2/main/file.c
    team/moy/mfcr2/main/frame.c
    team/moy/mfcr2/main/http.c
    team/moy/mfcr2/main/indications.c
    team/moy/mfcr2/main/logger.c
    team/moy/mfcr2/main/manager.c
    team/moy/mfcr2/main/pbx.c
    team/moy/mfcr2/main/rtp.c
    team/moy/mfcr2/main/sched.c
    team/moy/mfcr2/main/slinfactory.c
    team/moy/mfcr2/main/translate.c
    team/moy/mfcr2/main/udptl.c
    team/moy/mfcr2/main/utils.c
    team/moy/mfcr2/pbx/pbx_gtkconsole.c
    team/moy/mfcr2/pbx/pbx_realtime.c
    team/moy/mfcr2/pbx/pbx_spool.c
    team/moy/mfcr2/res/res_adsi.c
    team/moy/mfcr2/res/res_agi.c
    team/moy/mfcr2/res/res_config_ldap.c
    team/moy/mfcr2/res/res_jabber.c
    team/moy/mfcr2/res/res_musiconhold.c
    team/moy/mfcr2/res/res_odbc.c
    team/moy/mfcr2/res/res_smdi.c
    team/moy/mfcr2/res/snmp/agent.c
    team/moy/mfcr2/sample.call
    team/moy/mfcr2/sounds/Makefile
    team/moy/mfcr2/utils/ael_main.c
    team/moy/mfcr2/utils/astcanary.c
    team/moy/mfcr2/utils/check_expr.c
    team/moy/mfcr2/utils/conf2ael.c
    team/moy/mfcr2/utils/hashtest.c
    team/moy/mfcr2/utils/hashtest2.c
    team/moy/mfcr2/utils/refcounter.c

Propchange: team/moy/mfcr2/
------------------------------------------------------------------------------
Binary property 'branch-1.4-blocked' - no diff available.

Propchange: team/moy/mfcr2/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: team/moy/mfcr2/CHANGES
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/CHANGES?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/CHANGES (original)
+++ team/moy/mfcr2/CHANGES Sun May 25 16:11:54 2008
@@ -7,17 +7,39 @@
  * Added a new dialplan function, AST_CONFIG(), which allows you to access
    variables from an Asterisk configuration file.
  * The JACK_HOOK function now has a c() option to supply a custom client name.
+ * Added two new dialplan functions from libspeex for audio gain control and 
+   denoise, AGC() and DENOISE(). Both functions can be applied to the tx and 
+   rx directions of a channel from the dialplan.
+ * The SMDI_MSG_RETRIEVE function now has the ability to search for SMDI messages
+   based on other parameters.  The default is still to search based on the
+   forwarding station ID.  However, there are new options that allow you to search
+   based on the message desk terminal ID, or the message desk number.
+ * TIMEOUT() has been modified to be accurate down to the millisecond.
+ * ENUM*() functions now include the following new options:
+     - 'u' returns the full URI and does not strip off the URI-scheme.
+	 - 's' triggers ISN specific rewriting
+	 - 'i' looks for branches into an Infrastructure ENUM tree
+	 - 'd' for a direct DNS lookup without any flipping of digits.
+ * TXCIDNAME() has a new zone-suffix parameter (which defaults to 'e164.arpa')
 
 Zaptel channel driver (chan_zap) Changes
 ----------------------------------------
  * Channels can now be configured using named sections in zapata.conf, just
    like other channel drivers, including the use of templates.
+ * The default for pridialplan has changed from 'national' to 'unknown'.
 
 PBX Changes
 -----------
  * It is now possible to specify a pattern match as a hint. Once a phone subscribes
    to something that matches the pattern a hint will be created using the contents
    and variables evaluated.
+ * Dialplan matching has been extended to allow an extension to return to the
+   PBX core to wait for more digits.  This is done by using the new dialplan
+   application called "Incomplete".  This will permit a whole new level of
+   extension control, by giving the administrator more control over early
+   matches employing one of the short-circuit pattern match operators.  Note
+   that custom applications can trigger this same behavior by returning the
+   special value AST_PBX_INCOMPLETE.
 
 Application Changes
 -------------------
@@ -28,6 +50,11 @@
    quite helpful.
  * Voicemail now permits a mailbox setting to wrap around from first to last
    messages, if the "messagewrap" option is set to a true value.
+ * Voicemail now permits an external script to be run, for password validation.
+   The script should output "VALID" or "INVALID" on stdout, depending upon the
+   wish to validate or invalidate the password given.  Arguments are:
+   "mailbox" "context" "oldpass" "newpass".  See the sample voicemail.conf for
+   more details
  * Dial has a new option: F(context^extension^pri), which permits a callee to
    continue in the dialplan, at the specified label, if the caller hangs up.
  * ChanSpy and ExtenSpy have a new option, 's' which suppresses speaking the
@@ -40,6 +67,16 @@
    to be spoken instead of the channel name or number. For more information on the
    use of this option, issue the command "core show application ChanSpy" from the 
    Asterisk CLI.
+ * Chanspy has a new option, 'd', which allows the spy to use DTMF to swap between
+   spy modes. Use of this feature overrides the typical use of numeric DTMF. In other
+   words, if using the 'd' option, it is not possible to enter a number to append to
+   the first argument to Chanspy(). Pressing 4 will change to spy mode, pressing 5 will
+   change to whisper mode, and pressing 6 will change to barge mode.
+ * ExternalIVR now takes several options that affect the way it performs, as
+   well as having several new commands.  Please see doc/externalivr.txt for the
+   complete documentation.
+ * ChanIsAvail has a new option, 'a', which will return all available channels instead
+   of just the first one if you give the function more then one channel to check.
 
 SIP Changes
 -----------
@@ -56,6 +93,10 @@
    and restore this performance improvement. Astobj2 refcounting is now used
    for users, peers, and dialogs.  Users are encouraged to assist in regression
    testing and problem reporting!
+ * Added ability to specify registration expiry time on a per registration basis in
+   the register line.
+ * Added support for T140 RED - redundancy in T.140 to prevent text loss due to
+   lost packets.
 
 IAX Changes
 -----------
@@ -66,11 +107,27 @@
   * New CLI command, "config reload <file.conf>" which reloads any module that
      references that particular configuration file.  Also added "config list"
      which shows which configuration files are in use.
+  * New CLI commands, "pri show version" and "ss7 show version" that will
+     display which version of libpri and libss7 are being used, respectively.
+	 A new API call was added so trunk will now have to be compiled against
+	 a versions of libpri and libss7 that have them or it will not know that
+	 these libraries exist.
 
 DNS manager changes
 -------------------
   * Addresses managed by DNS manager now can check to see if there is a DNS
     SRV record for a given domain and will use that hostname/port if present.
+
+AMI - The manager (TCP/TLS/HTTP)
+--------------------------------
+  * The Status command now takes an optional list of variables to display
+    along with channel status.
+
+ODBC Changes
+------------
+  * res_odbc no longer has a limit of 1023 total possible unshared connections,
+    as some people were running into this limit.  This limit has been increased
+    to 4.2 billion.
 
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.4.X to Asterisk 1.6.0  -------------
@@ -125,6 +182,7 @@
   * Originate now requires the Originate privilege and, if you want to call out
     to a subshell, it requires the System privilege, as well.  This was done to
     enhance manager security.
+  * Originate now accepts codec settings with "Codecs: alaw, ulaw, h264" 
   * New command: Atxfer. See doc/manager_1_1.txt for more details or 
     manager show command Atxfer from the CLI
 
@@ -376,6 +434,12 @@
      voicemail boxes.  The SMDI interface can also poll for MWI changes when some
      outside entity is modifying the state of the mailbox (such as IMAP storage or
      a web interface of some kind).
+  * Added the support for marking messages as "urgent." There are two methods to accomplish
+     this. One is to pass the 'U' option to VoiceMail(). Another way to mark a message as urgent
+	 is to specify "review=yes" in voicemail.conf. Doing this will cause allow the user to mark
+	 the message as urgent after he has recorded a voicemail by following the voice instructions.
+	When listening to voicemails using VoiceMailMain urgent messages will be presented before other
+	 messages
 
 Queue changes
 -------------
@@ -410,6 +474,12 @@
   * New configuration option: randomperiodicannounce. If a list of periodic announcements is
     specified by the periodic-announce option, then one will be chosen randomly when it is time
 	to play a periodic announcment
+  * New configuration options: announce-position now takes two more values in addition to "yes" and
+    "no." Two new options, "limit" and "more," are allowed. These are tied to another option,
+	announce-position-limit. By setting announce-position to "limit" callers will only have their
+	position announced if their position is less than what is specified by announce-position-limit.
+	If announce-position is set to "more" then callers beyond the position specified by announce-position-limit
+	will be told that their are more than announce-position-limit callers waiting.
 
 MeetMe Changes
 --------------
@@ -674,3 +744,9 @@
      turned on, via the CHANNEL(trace) dialplan function.  Could be useful for
      dialplan debugging.
   * iLBC source code no longer included (see UPGRADE.txt for details)
+  * If compiled with DETECT_DEADLOCKS enabled and if you have glibc, then if 
+     deadlock is detected, a backtrace of the stack which led to the lock calls
+	 will be output to the CLI.
+  * If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing
+     the "core show locks" CLI command will give lock information output as well
+	 as a backtrace of the stack which led to the lock calls.

Modified: team/moy/mfcr2/CREDITS
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/CREDITS?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/CREDITS (original)
+++ team/moy/mfcr2/CREDITS Sun May 25 16:11:54 2008
@@ -19,6 +19,9 @@
 
 John Todd, TalkPlus, Inc.  and JR Richardson, Ntegrated Solutions. - for funding
     the development of SIP Session Timers support.
+
+Omnitor AB, Gunnar Hellström, for funding work with videocaps, T.140 RED,
+originate with video/text and many more contributions.
 
 === WISHLIST CONTRIBUTERS ===
 Jeremy McNamara - SpeeX support

Modified: team/moy/mfcr2/Makefile
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/Makefile?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/Makefile (original)
+++ team/moy/mfcr2/Makefile Sun May 25 16:11:54 2008
@@ -351,7 +351,7 @@
 	@exit 1
 
 menuselect.makeopts: menuselect/menuselect menuselect-tree makeopts
-	menuselect/menuselect --check-deps $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts
+	menuselect/menuselect --check-deps menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS)
 
 $(MOD_SUBDIRS_EMBED_LDSCRIPT):
 	@echo "EMBED_LDSCRIPTS+="`$(SILENTMAKE) -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules
@@ -821,16 +821,16 @@
 nmenuconfig: nmenuselect
 
 menuselect: menuselect/menuselect menuselect-tree
-	- at menuselect/menuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
+	- at menuselect/menuselect menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
 
 cmenuselect: menuselect/cmenuselect menuselect-tree
-	- at menuselect/cmenuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
+	- at menuselect/cmenuselect menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
 
 gmenuselect: menuselect/gmenuselect menuselect-tree
-	- at menuselect/gmenuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
+	- at menuselect/gmenuselect menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
 
 nmenuselect: menuselect/nmenuselect menuselect-tree
-	- at menuselect/nmenuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
+	- at menuselect/nmenuselect menuselect.makeopts $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) && (echo "menuselect changes saved!"; rm -f channels/h323/Makefile.ast main/asterisk) || echo "menuselect changes NOT saved!"
 
 # options for make in menuselect/
 MAKE_MENUSELECT=CC="$(HOST_CC)" CXX="$(CXX)" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect CONFIGURE_SILENT="--silent"
@@ -869,4 +869,4 @@
 asterisk.pdf:
 	$(MAKE) -C doc/tex asterisk.pdf
 
-.PHONY: menuselect main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all pdf dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_DIST_CLEAN) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) badshell main/version.c include/asterisk/version.h installdirs
+.PHONY: menuselect menuselect.makeopts main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all pdf dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_DIST_CLEAN) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) badshell main/version.c include/asterisk/version.h installdirs

Modified: team/moy/mfcr2/Makefile.rules
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/Makefile.rules?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/Makefile.rules (original)
+++ team/moy/mfcr2/Makefile.rules Sun May 25 16:11:54 2008
@@ -21,7 +21,7 @@
 .PHONY: dist-clean
 
 # extra cflags to build dependencies. Recursively expanded.
-MAKE_DEPS= -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
+MAKE_DEPS= -MD -MT $@ -MF .$(subst /,_,$@).d -MP
 
 ifeq ($(NOISY_BUILD),)
     ECHO_PREFIX=@

Modified: team/moy/mfcr2/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/UPGRADE.txt?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/UPGRADE.txt (original)
+++ team/moy/mfcr2/UPGRADE.txt Sun May 25 16:11:54 2008
@@ -59,6 +59,12 @@
 * The silencethreshold used for various applications is now settable via a
   centralized config option in dsp.conf.
 
+* The logical value of spaces immediately preceding a standalone 0 previously
+  evaluated to true.  It now evaluates to false.  This has confused a good
+  many people in the past (typically because they failed to realize the space
+  had any significance).  Since this violates the Principle of Least Surprise,
+  it has been changed.
+
 Voicemail:
 
 * The voicemail configuration values 'maxmessage' and 'minmessage' have
@@ -74,6 +80,8 @@
   checking mailboxes for changes so that they can send MWI information to users.
   Examples of situations that would require this option are web interfaces to
   voicemail or an email client in the case of using IMAP storage.
+* The externnotify script should accept an additional (last) parameter
+  containing the number of urgent messages in the INBOX.
 
 Applications:
 
@@ -92,7 +100,12 @@
   Gosub()/Return() applications.  To replace MacroExclusive(), we have
   introduced dialplan functions LOCK(), TRYLOCK(), and UNLOCK().  You may use
   these functions in any location where you desire to ensure that only one
-  channel is executing that path at any one time.
+  channel is executing that path at any one time.  The Macro() applications
+  are deprecated for performance reasons.  However, since Macro() has been
+  around for a long time and so many dialplans depend heavily on it, for the
+  sake of backwards compatibility it will not be removed .  It is also worth
+  noting that using both Macro() and GoSub() at the same time is _heavily_
+  discouraged.
 * Read() now sets a READSTATUS variable on exit.  It does NOT automatically
   return -1 (and hangup) anymore on error.  If you want to hangup on error,
   you need to do so explicitly in your dialplan.
@@ -105,6 +118,8 @@
   instead.
 * While app_directory has always relied on having a voicemail.conf or users.conf file
   correctly set up, it now is dependent on app_voicemail being compiled as well.
+* The arguments in ExecIf changed a bit, to be more like other applications.
+  The syntax is now ExecIf(<cond>?appiftrue(args):appiffalse(args)).
 
 Dialplan Functions:
 

Modified: team/moy/mfcr2/acinclude.m4
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/acinclude.m4?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/acinclude.m4 (original)
+++ team/moy/mfcr2/acinclude.m4 Sun May 25 16:11:54 2008
@@ -7,13 +7,17 @@
 AC_DEFUN([AST_GCC_ATTRIBUTE],
 [
 AC_MSG_CHECKING(for compiler 'attribute $1' support)
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -Werror"
 AC_COMPILE_IFELSE(
-	AC_LANG_PROGRAM([static int __attribute__(($1)) test(void) {}],
+	AC_LANG_PROGRAM([static void __attribute__(($1)) *test(void *muffin, ...) {}],
 			[]),
 	AC_MSG_RESULT(yes)
 	AC_DEFINE_UNQUOTED([HAVE_ATTRIBUTE_$1], 1, [Define to 1 if your GCC C compiler supports the '$1' attribute.]),
 	AC_MSG_RESULT(no))
-])
+]
+CFLAGS="$saved_CFLAGS"
+)
 
 # Helper function to setup variables for a package.
 # $1 -> the package name. Used in configure.ac and also as a prefix

Modified: team/moy/mfcr2/apps/app_alarmreceiver.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_alarmreceiver.c?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/apps/app_alarmreceiver.c (original)
+++ team/moy/mfcr2/apps/app_alarmreceiver.c Sun May 25 16:11:54 2008
@@ -185,7 +185,7 @@
 			wf.subclass = AST_FORMAT_ULAW;
 			wf.offset = AST_FRIENDLY_OFFSET;
 			wf.mallocd = 0;
-			wf.data = tone_block.buf;
+			wf.data.ptr = tone_block.buf;
 			wf.datalen = f->datalen;
 			wf.samples = wf.datalen;
 			
@@ -252,8 +252,8 @@
 
 		/* If they hung up, leave */
 		if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP)) {
-			if (f->seqno) {
-				chan->hangupcause = f->seqno;
+			if (f->data.uint32) {
+				chan->hangupcause = f->data.uint32;
 			}
 			ast_frfree(f);
 			res = -1;

Modified: team/moy/mfcr2/apps/app_chanisavail.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_chanisavail.c?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/apps/app_chanisavail.c (original)
+++ team/moy/mfcr2/apps/app_chanisavail.c Sun May 25 16:11:54 2008
@@ -50,6 +50,7 @@
 "This application will check to see if any of the specified channels are\n"
 "available.\n"
 "  Options:\n"
+"    a - Check for all available channels, not only the first one.\n"
 "    s - Consider the channel unavailable if the channel is in use at all.\n"
 "    t - Simply checks if specified channels exist in the channel list\n"
 "        (implies option s).\n"
@@ -61,9 +62,12 @@
 
 static int chanavail_exec(struct ast_channel *chan, void *data)
 {
-	int res=-1, inuse=-1, option_state=0, string_compare=0;
+	int inuse=-1, option_state=0, string_compare=0, option_all_avail=0;
 	int status;
 	char *info, tmp[512], trychan[512], *peers, *tech, *number, *rest, *cur;
+	struct ast_str *tmp_availchan = ast_str_alloca(2048);
+	struct ast_str *tmp_availorig = ast_str_alloca(2048);
+	struct ast_str *tmp_availstat = ast_str_alloca(2048);
 	struct ast_channel *tempchan;
 	AST_DECLARE_APP_ARGS(args,
 		AST_APP_ARG(reqchans);
@@ -80,10 +84,15 @@
 	AST_STANDARD_APP_ARGS(args, info);
 
 	if (args.options) {
-		if (strchr(args.options, 's'))
+		if (strchr(args.options, 'a')) {
+			option_all_avail = 1;
+		}
+		if (strchr(args.options, 's')) {
 			option_state = 1;
-		if (strchr(args.options, 't'))
+		}
+		if (strchr(args.options, 't')) {
 			string_compare = 1;
+		}
 	}
 	peers = args.reqchans;
 	if (peers) {
@@ -119,27 +128,32 @@
 				status = inuse = ast_device_state(trychan);
 			}
 			if ((inuse <= 1) && (tempchan = ast_request(tech, chan->nativeformats, number, &status))) {
-					pbx_builtin_setvar_helper(chan, "AVAILCHAN", tempchan->name);
-					/* Store the originally used channel too */
+					ast_str_append(&tmp_availchan, 0, "%s%s", tmp_availchan->used ? "&" : "", tempchan->name);
+					
 					snprintf(tmp, sizeof(tmp), "%s/%s", tech, number);
-					pbx_builtin_setvar_helper(chan, "AVAILORIGCHAN", tmp);
+					ast_str_append(&tmp_availorig, 0, "%s%s", tmp_availorig->used ? "&" : "", tmp);
+
 					snprintf(tmp, sizeof(tmp), "%d", status);
-					pbx_builtin_setvar_helper(chan, "AVAILSTATUS", tmp);
+					ast_str_append(&tmp_availstat, 0, "%s%s", tmp_availstat->used ? "&" : "", tmp);
+
 					ast_hangup(tempchan);
 					tempchan = NULL;
-					res = 1;
-					break;
+
+					if (!option_all_avail) {
+						break;
+					}
 			} else {
 				snprintf(tmp, sizeof(tmp), "%d", status);
-				pbx_builtin_setvar_helper(chan, "AVAILSTATUS", tmp);
+				ast_str_append(&tmp_availstat, 0, "%s%s", tmp_availstat->used ? "&" : "", tmp);
 			}
 			cur = rest;
 		} while (cur);
 	}
-	if (res < 1) {
-		pbx_builtin_setvar_helper(chan, "AVAILCHAN", "");
-		pbx_builtin_setvar_helper(chan, "AVAILORIGCHAN", "");
-	}
+
+	pbx_builtin_setvar_helper(chan, "AVAILCHAN", tmp_availchan->str);
+	/* Store the originally used channel too */
+	pbx_builtin_setvar_helper(chan, "AVAILORIGCHAN", tmp_availorig->str);
+	pbx_builtin_setvar_helper(chan, "AVAILSTATUS", tmp_availstat->str);
 
 	return 0;
 }

Modified: team/moy/mfcr2/apps/app_chanspy.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_chanspy.c?view=diff&rev=118254&r1=118253&r2=118254
==============================================================================
--- team/moy/mfcr2/apps/app_chanspy.c (original)
+++ team/moy/mfcr2/apps/app_chanspy.c Sun May 25 16:11:54 2008
@@ -64,13 +64,21 @@
 "    - Dialing a series of digits followed by # builds a channel name to append\n"
 "      to 'chanprefix'. For example, executing ChanSpy(Agent) and then dialing\n"
 "      the digits '1234#' while spying will begin spying on the channel\n"
-"      'Agent/1234'.\n"
+"      'Agent/1234'. Note that this feature will be overriden if the 'd' option\n"
+"       is used\n"
 "  Note: The X option supersedes the three features above in that if a valid\n"
 "        single digit extension exists in the correct context ChanSpy will\n"
 "        exit to it. This also disables choosing a channel based on 'chanprefix'\n"
 "        and a digit sequence.\n"
 "  Options:\n"
 "    b                      - Only spy on channels involved in a bridged call.\n"
+"    B                      - Instead of whispering on a single channel barge in on both\n"
+"                             channels involved in the call.\n"
+"    d                      - Override the typical numeric DTMF functionality and instead\n"
+"                             use DTMF to switch between spy modes.\n"
+"                                     4 = spy mode\n"
+"                                     5 = whisper mode\n"
+"                                     6 = barge mode\n"
 "    g(grp)                 - Only spy on channels in which one or more of the groups \n"
 "                             listed in 'grp' matches one or more groups from the\n"
 "                             SPYGROUP variable set on the channel to be spied upon.\n"
@@ -124,6 +132,13 @@
 "        exit to it.\n"
 "  Options:\n"
 "    b                      - Only spy on channels involved in a bridged call.\n"
+"    B                      - Instead of whispering on a single channel barge in on both\n"
+"                             channels involved in the call.\n"
+"    d                      - Override the typical numeric DTMF functionality and instead\n"
+"                             use DTMF to switch between spy modes.\n"
+"                                     4 = spy mode\n"
+"                                     5 = whisper mode\n"
+"                                     6 = barge mode\n"
 "    g(grp)                 - Only spy on channels in which one or more of the groups \n"
 "                             listed in 'grp' matches one or more groups from the\n"
 "                             SPYGROUP variable set on the channel to be spied upon.\n"
@@ -160,19 +175,20 @@
 ;
 
 enum {
-	OPTION_QUIET     = (1 << 0),    /* Quiet, no announcement */
-	OPTION_BRIDGED   = (1 << 1),    /* Only look at bridged calls */
-	OPTION_VOLUME    = (1 << 2),    /* Specify initial volume */
-	OPTION_GROUP     = (1 << 3),    /* Only look at channels in group */
-	OPTION_RECORD    = (1 << 4),
-	OPTION_WHISPER   = (1 << 5),
-	OPTION_PRIVATE   = (1 << 6),    /* Private Whisper mode */
-	OPTION_READONLY  = (1 << 7),    /* Don't mix the two channels */
-	OPTION_EXIT      = (1 << 8),    /* Exit to a valid single digit extension */
-	OPTION_ENFORCED  = (1 << 9),    /* Enforced mode */
-	OPTION_NOTECH    = (1 << 10),   /* Skip technology name playback */
-	OPTION_BARGE     = (1 << 11),   /* Barge mode (whisper to both channels) */
-	OPTION_NAME      = (1 << 12),   /* Say the name of the person on whom we will spy */
+	OPTION_QUIET             = (1 << 0),    /* Quiet, no announcement */
+	OPTION_BRIDGED           = (1 << 1),    /* Only look at bridged calls */
+	OPTION_VOLUME            = (1 << 2),    /* Specify initial volume */
+	OPTION_GROUP             = (1 << 3),    /* Only look at channels in group */
+	OPTION_RECORD            = (1 << 4),
+	OPTION_WHISPER           = (1 << 5),
+	OPTION_PRIVATE           = (1 << 6),    /* Private Whisper mode */
+	OPTION_READONLY          = (1 << 7),    /* Don't mix the two channels */
+	OPTION_EXIT              = (1 << 8),    /* Exit to a valid single digit extension */
+	OPTION_ENFORCED          = (1 << 9),    /* Enforced mode */
+	OPTION_NOTECH            = (1 << 10),   /* Skip technology name playback */
+	OPTION_BARGE             = (1 << 11),   /* Barge mode (whisper to both channels) */
+	OPTION_NAME              = (1 << 12),   /* Say the name of the person on whom we will spy */
+	OPTION_DTMF_SWITCH_MODES = (1 << 13),   /*Allow numeric DTMF to switch between chanspy modes */
 } chanspy_opt_flags;
 
 enum {
@@ -198,6 +214,7 @@
 	AST_APP_OPTION('X', OPTION_EXIT),
 	AST_APP_OPTION('s', OPTION_NOTECH),
 	AST_APP_OPTION_ARG('n', OPTION_NAME, OPT_ARG_NAME),
+	AST_APP_OPTION('d', OPTION_DTMF_SWITCH_MODES),
 });
 
 
@@ -246,7 +263,7 @@
 	}
 
 	if (csth->fd)
-		write(csth->fd, f->data, f->datalen);
+		write(csth->fd, f->data.ptr, f->datalen);
 
 	ast_frfree(f);
 
@@ -279,8 +296,22 @@
 	ast_mutex_t lock;
 };
 
+static void change_spy_mode(const char digit, struct ast_flags *flags)
+{
+	if (digit == '4') {
+		ast_clear_flag(flags, OPTION_WHISPER);
+		ast_clear_flag(flags, OPTION_BARGE);
+	} else if (digit == '5') {
+		ast_clear_flag(flags, OPTION_BARGE);
+		ast_set_flag(flags, OPTION_WHISPER);
+	} else if (digit == '6') {
+		ast_clear_flag(flags, OPTION_WHISPER);
+		ast_set_flag(flags, OPTION_BARGE);
+	}
+}
+
 static int channel_spy(struct ast_channel *chan, struct chanspy_ds *spyee_chanspy_ds, 
-	int *volfactor, int fd, const struct ast_flags *flags, char *exitcontext) 
+	int *volfactor, int fd, struct ast_flags *flags, char *exitcontext) 
 {
 	struct chanspy_translation_helper csth;
 	int running = 0, res, x = 0;
@@ -325,15 +356,14 @@
 		return 0;
 	}
 
-	if (ast_test_flag(flags, OPTION_BARGE)) {
-  		ast_audiohook_init(&csth.whisper_audiohook, AST_AUDIOHOOK_TYPE_WHISPER, "ChanSpy");
-		ast_audiohook_init(&csth.bridge_whisper_audiohook, AST_AUDIOHOOK_TYPE_WHISPER, "Chanspy");
-  		start_spying(spyee, spyer_name, &csth.whisper_audiohook); /* Unlocks spyee */
-		start_spying(ast_bridged_channel(spyee), spyer_name, &csth.bridge_whisper_audiohook);
-	} else if (ast_test_flag(flags, OPTION_WHISPER)) {
-		ast_audiohook_init(&csth.whisper_audiohook, AST_AUDIOHOOK_TYPE_WHISPER, "ChanSpy");
-		start_spying(spyee, spyer_name, &csth.whisper_audiohook); /* Unlocks spyee */
-  	}
+	ast_channel_lock(chan);
+	ast_set_flag(chan, AST_FLAG_END_DTMF_ONLY);
+	ast_channel_unlock(chan);
+
+ 	ast_audiohook_init(&csth.whisper_audiohook, AST_AUDIOHOOK_TYPE_WHISPER, "ChanSpy");
+	ast_audiohook_init(&csth.bridge_whisper_audiohook, AST_AUDIOHOOK_TYPE_WHISPER, "Chanspy");
+  	start_spying(spyee, spyer_name, &csth.whisper_audiohook); /* Unlocks spyee */
+	start_spying(ast_bridged_channel(spyee), spyer_name, &csth.bridge_whisper_audiohook);
 
 	ast_channel_unlock(spyee);
 	spyee = NULL;
@@ -415,7 +445,11 @@
 				ast_debug(2, "Exit by single digit did not work in chanspy. Extension %s does not exist in context %s\n", tmp, exitcontext);
 			}
 		} else if (res >= '0' && res <= '9') {
-			inp[x++] = res;
+			if (ast_test_flag(flags, OPTION_DTMF_SWITCH_MODES)) {
+				change_spy_mode(res, flags);
+			} else {
+				inp[x++] = res;
+			}
 		}
 
 		if (res == '*') {
@@ -443,21 +477,18 @@
 	else
 		ast_deactivate_generator(chan);
 
-	if (ast_test_flag(flags, OPTION_BARGE)) {
-		ast_audiohook_lock(&csth.whisper_audiohook);
-		ast_audiohook_detach(&csth.whisper_audiohook);
-		ast_audiohook_unlock(&csth.whisper_audiohook);
-		ast_audiohook_destroy(&csth.whisper_audiohook);
-		ast_audiohook_lock(&csth.bridge_whisper_audiohook);
-		ast_audiohook_detach(&csth.bridge_whisper_audiohook);
-		ast_audiohook_unlock(&csth.bridge_whisper_audiohook);
-		ast_audiohook_destroy(&csth.bridge_whisper_audiohook);
-	} else if (ast_test_flag(flags, OPTION_WHISPER)) {
-		ast_audiohook_lock(&csth.whisper_audiohook);
-		ast_audiohook_detach(&csth.whisper_audiohook);
-		ast_audiohook_unlock(&csth.whisper_audiohook);
-		ast_audiohook_destroy(&csth.whisper_audiohook);
-	}
+	ast_channel_lock(chan);
+	ast_clear_flag(chan, AST_FLAG_END_DTMF_ONLY);
+	ast_channel_unlock(chan);
+
+	ast_audiohook_lock(&csth.whisper_audiohook);
+	ast_audiohook_detach(&csth.whisper_audiohook);
+	ast_audiohook_unlock(&csth.whisper_audiohook);
+	ast_audiohook_destroy(&csth.whisper_audiohook);
+	ast_audiohook_lock(&csth.bridge_whisper_audiohook);
+	ast_audiohook_detach(&csth.bridge_whisper_audiohook);
+	ast_audiohook_unlock(&csth.bridge_whisper_audiohook);
+	ast_audiohook_destroy(&csth.bridge_whisper_audiohook);
 
 	ast_audiohook_lock(&csth.spy_audiohook);
 	ast_audiohook_detach(&csth.spy_audiohook);
@@ -578,7 +609,7 @@
 	return setup_chanspy_ds(next, chanspy_ds);
 }
 
-static int common_exec(struct ast_channel *chan, const struct ast_flags *flags,
+static int common_exec(struct ast_channel *chan, struct ast_flags *flags,
 	int volfactor, const int fd, const char *mygroup, const char *myenforced,
 	const char *spec, const char *exten, const char *context, const char *mailbox,
 	const char *name_context)
@@ -596,12 +627,15 @@
 
 	if (ast_test_flag(flags, OPTION_EXIT)) {
 		const char *c;
-		if ((c = pbx_builtin_getvar_helper(chan, "SPY_EXIT_CONTEXT")))
+		ast_channel_lock(chan);
+		if ((c = pbx_builtin_getvar_helper(chan, "SPY_EXIT_CONTEXT"))) {
 			ast_copy_string(exitcontext, c, sizeof(exitcontext));
-		else if (!ast_strlen_zero(chan->macrocontext))
+		} else if (!ast_strlen_zero(chan->macrocontext)) {
 			ast_copy_string(exitcontext, chan->macrocontext, sizeof(exitcontext));
-		else
+		} else {

[... 49410 lines stripped ...]



More information about the svn-commits mailing list