[asterisk-commits] branch oej/multiparking-trunk r14416 - in /team/oej/multiparking-trunk: ./ ag...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Thu Mar 23 10:59:30 MST 2006


Author: oej
Date: Thu Mar 23 11:58:20 2006
New Revision: 14416

URL: http://svn.digium.com/view/asterisk?rev=14416&view=rev
Log:
Reset automerge

Added:
    team/oej/multiparking-trunk/agi/jukebox.agi
      - copied unchanged from r14382, trunk/agi/jukebox.agi
    team/oej/multiparking-trunk/configs/res_snmp.conf.sample
      - copied unchanged from r14382, trunk/configs/res_snmp.conf.sample
    team/oej/multiparking-trunk/contrib/scripts/meetme.sql
      - copied unchanged from r14382, trunk/contrib/scripts/meetme.sql
    team/oej/multiparking-trunk/doc/asterisk-mib.txt
      - copied unchanged from r14382, trunk/doc/asterisk-mib.txt
    team/oej/multiparking-trunk/doc/digium-mib.txt
      - copied unchanged from r14382, trunk/doc/digium-mib.txt
    team/oej/multiparking-trunk/doc/snmp.txt
      - copied unchanged from r14382, trunk/doc/snmp.txt
    team/oej/multiparking-trunk/res/res_convert.c
      - copied unchanged from r14382, trunk/res/res_convert.c
    team/oej/multiparking-trunk/res/res_snmp.c
      - copied unchanged from r14382, trunk/res/res_snmp.c
    team/oej/multiparking-trunk/res/snmp/
      - copied from r14382, trunk/res/snmp/
    team/oej/multiparking-trunk/res/snmp/agent.c
      - copied unchanged from r14382, trunk/res/snmp/agent.c
    team/oej/multiparking-trunk/res/snmp/agent.h
      - copied unchanged from r14382, trunk/res/snmp/agent.h
Modified:
    team/oej/multiparking-trunk/   (props changed)
    team/oej/multiparking-trunk/CREDITS
    team/oej/multiparking-trunk/Makefile
    team/oej/multiparking-trunk/README
    team/oej/multiparking-trunk/UPGRADE.txt
    team/oej/multiparking-trunk/agi/Makefile
    team/oej/multiparking-trunk/apps/app_dial.c
    team/oej/multiparking-trunk/apps/app_externalivr.c
    team/oej/multiparking-trunk/apps/app_meetme.c
    team/oej/multiparking-trunk/apps/app_mixmonitor.c
    team/oej/multiparking-trunk/apps/app_queue.c
    team/oej/multiparking-trunk/apps/app_rpt.c
    team/oej/multiparking-trunk/apps/app_voicemail.c
    team/oej/multiparking-trunk/ast_expr2.c
    team/oej/multiparking-trunk/ast_expr2.fl
    team/oej/multiparking-trunk/ast_expr2.h
    team/oej/multiparking-trunk/ast_expr2.y
    team/oej/multiparking-trunk/ast_expr2f.c
    team/oej/multiparking-trunk/asterisk.c
    team/oej/multiparking-trunk/asterisk.sgml
    team/oej/multiparking-trunk/astmm.c
    team/oej/multiparking-trunk/build_tools/make_build_h
    team/oej/multiparking-trunk/build_tools/make_svn_branch_name
    team/oej/multiparking-trunk/cdr.c
    team/oej/multiparking-trunk/cdr/Makefile
    team/oej/multiparking-trunk/cdr/cdr_csv.c
    team/oej/multiparking-trunk/cdr/cdr_manager.c
    team/oej/multiparking-trunk/cdr/cdr_odbc.c
    team/oej/multiparking-trunk/cdr/cdr_pgsql.c
    team/oej/multiparking-trunk/cdr/cdr_sqlite.c
    team/oej/multiparking-trunk/cdr/cdr_tds.c
    team/oej/multiparking-trunk/channel.c
    team/oej/multiparking-trunk/channels/chan_iax2.c
    team/oej/multiparking-trunk/channels/chan_misdn.c
    team/oej/multiparking-trunk/channels/chan_phone.c
    team/oej/multiparking-trunk/channels/chan_sip.c
    team/oej/multiparking-trunk/channels/chan_skinny.c
    team/oej/multiparking-trunk/channels/chan_zap.c
    team/oej/multiparking-trunk/channels/misdn/chan_misdn_config.h
    team/oej/multiparking-trunk/channels/misdn/isdn_lib.c
    team/oej/multiparking-trunk/channels/misdn/isdn_lib.h
    team/oej/multiparking-trunk/channels/misdn/isdn_msg_parser.c
    team/oej/multiparking-trunk/channels/misdn_config.c
    team/oej/multiparking-trunk/cli.c
    team/oej/multiparking-trunk/codecs/Makefile
    team/oej/multiparking-trunk/codecs/gsm/Makefile
    team/oej/multiparking-trunk/codecs/gsm/libgsm.vcproj   (props changed)
    team/oej/multiparking-trunk/codecs/ilbc/libilbc.vcproj   (props changed)
    team/oej/multiparking-trunk/codecs/lpc10/liblpc10.vcproj   (props changed)
    team/oej/multiparking-trunk/config.c
    team/oej/multiparking-trunk/configs/cdr.conf.sample
    team/oej/multiparking-trunk/configs/cdr_tds.conf.sample
    team/oej/multiparking-trunk/configs/features.conf.sample
    team/oej/multiparking-trunk/configs/iax.conf.sample
    team/oej/multiparking-trunk/configs/indications.conf.sample
    team/oej/multiparking-trunk/configs/misdn.conf.sample
    team/oej/multiparking-trunk/configs/musiconhold.conf.sample
    team/oej/multiparking-trunk/configs/sip.conf.sample
    team/oej/multiparking-trunk/configs/zapata.conf.sample
    team/oej/multiparking-trunk/contrib/utils/rawplayer.c
    team/oej/multiparking-trunk/db.c
    team/oej/multiparking-trunk/doc/00README.1st
    team/oej/multiparking-trunk/doc/billing.txt
    team/oej/multiparking-trunk/doc/enum.txt
    team/oej/multiparking-trunk/doc/extconfig.txt
    team/oej/multiparking-trunk/doc/misdn.txt
    team/oej/multiparking-trunk/doc/realtime.txt
    team/oej/multiparking-trunk/editline/np/vis.c
    team/oej/multiparking-trunk/editline/readline.c
    team/oej/multiparking-trunk/editline/term.c
    team/oej/multiparking-trunk/funcs/Makefile
    team/oej/multiparking-trunk/funcs/func_enum.c
    team/oej/multiparking-trunk/image.c
    team/oej/multiparking-trunk/include/asterisk/cdr.h
    team/oej/multiparking-trunk/include/asterisk/channel.h
    team/oej/multiparking-trunk/include/asterisk/compat.h
    team/oej/multiparking-trunk/include/asterisk/config.h
    team/oej/multiparking-trunk/include/asterisk/doxyref.h
    team/oej/multiparking-trunk/include/asterisk/logger.h
    team/oej/multiparking-trunk/include/asterisk/module.h
    team/oej/multiparking-trunk/include/asterisk/options.h
    team/oej/multiparking-trunk/include/asterisk/pbx.h
    team/oej/multiparking-trunk/include/asterisk/say.h
    team/oej/multiparking-trunk/include/asterisk/sched.h
    team/oej/multiparking-trunk/include/asterisk/utils.h
    team/oej/multiparking-trunk/include/solaris-compat/compat.h
    team/oej/multiparking-trunk/indications.c
    team/oej/multiparking-trunk/io.c
    team/oej/multiparking-trunk/jitterbuf.c
    team/oej/multiparking-trunk/jitterbuf.h
    team/oej/multiparking-trunk/loader.c
    team/oej/multiparking-trunk/logger.c
    team/oej/multiparking-trunk/pbx.c
    team/oej/multiparking-trunk/res/Makefile
    team/oej/multiparking-trunk/res/res_agi.c
    team/oej/multiparking-trunk/res/res_config_odbc.c
    team/oej/multiparking-trunk/res/res_features.c
    team/oej/multiparking-trunk/res/res_monitor.c
    team/oej/multiparking-trunk/res/res_musiconhold.c
    team/oej/multiparking-trunk/rtp.c
    team/oej/multiparking-trunk/sample.call
    team/oej/multiparking-trunk/say.c
    team/oej/multiparking-trunk/sched.c
    team/oej/multiparking-trunk/sounds.txt
    team/oej/multiparking-trunk/strcompat.c
    team/oej/multiparking-trunk/translate.c
    team/oej/multiparking-trunk/utils.c

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

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

Propchange: team/oej/multiparking-trunk/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Thu Mar 23 11:58:20 2006
@@ -1,1 +1,1 @@
-/trunk:1-11011
+/trunk:1-14413

Modified: team/oej/multiparking-trunk/CREDITS
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/CREDITS?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/CREDITS (original)
+++ team/oej/multiparking-trunk/CREDITS Thu Mar 23 11:58:20 2006
@@ -59,8 +59,8 @@
 Jayson Vantuyl - Manager protocol changes, various other bugs.
 	jvantuyl at computingedge.net
 Thorsten Lockert - OpenBSD, FreeBSD ports, making MacOS X port run on 10.3,
-	dialplan include verification, route lookup on OpenBSD, various other
-	bugs. tholo at sigmasoft.com
+	dialplan include verification, route lookup on OpenBSD, SNMP agent
+	support (res_snmp), various other bugs. tholo at sigmasoft.com
 Brian West - ODBC support and Bug Marshaling  
 Josh Roberson - chan_zap reload support, Advanced Voicemail Features, other misc. patches,
 	and Bug Marshalling. - josh at asteriasgi.com, http://www.asteriasgi.com
@@ -83,6 +83,8 @@
 Michael Jerris - bug marshaling
 Leif Madsen, Jared Smith and Jim van Meggelen - the Asterisk book
 	available under a Creative Commons License at http://www.asteriskdocs.org
+Brian M. Clapper - poll.c emulation
+	This product includes software developed by Brian M. Clapper <bmc at clapper.org>
 
 === HOLD MUSIC ===
 Music provided by www.freeplaymusic.com

Modified: team/oej/multiparking-trunk/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/Makefile?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/Makefile (original)
+++ team/oej/multiparking-trunk/Makefile Thu Mar 23 11:58:20 2006
@@ -225,10 +225,12 @@
 endif
 
 GREP=grep
+ID=id
 
 ifeq ($(OSARCH),SunOS)
   GREP=/usr/xpg4/bin/grep
   M4=/usr/local/bin/m4
+  ID=/usr/xpg4/bin/id
 endif
 
 INCLUDE+=-Iinclude -I../include
@@ -355,7 +357,7 @@
 SUBDIRS=res channels pbx apps codecs formats agi cdr funcs utils stdtime
 
 OBJS=io.o sched.o logger.o frame.o loader.o config.o channel.o \
-	translate.o file.o say.o pbx.o cli.o md5.o term.o \
+	translate.o file.o pbx.o cli.o md5.o term.o \
 	ulaw.o alaw.o callerid.o fskmodem.o image.o app.o \
 	cdr.o tdd.o acl.o rtp.o udptl.o manager.o asterisk.o \
 	dsp.o chanvars.o indications.o autoservice.o db.o privacy.o \
@@ -363,6 +365,15 @@
 	utils.o plc.o jitterbuf.o dnsmgr.o devicestate.o \
 	netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \
 	cryptostub.o sha1.o
+
+# we need to link in the objects statically, not as a library, because
+# otherwise modules will not have them available if none of the static
+# objects use it.
+OBJS+= stdtime/localtime.o
+
+# At the moment say.o is an optional component which can be overridden
+# by a module.
+OBJS+= say.o
 
 ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/sys/poll.h),)
   OBJS+= poll.o
@@ -554,7 +565,7 @@
 	$(MAKE) -C stdtime clean
 
 datafiles: all
-	if [ x`whoami` = xroot ]; then sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
+	if [ x`$(ID) -un` = xroot ]; then sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
 	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/digits
 	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/priv-callerintros
 	for x in sounds/digits/*.gsm; do \

Modified: team/oej/multiparking-trunk/README
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/README?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/README (original)
+++ team/oej/multiparking-trunk/README Thu Mar 23 11:58:20 2006
@@ -51,13 +51,15 @@
 	* All Wildcard (tm) products from Digium (www.digium.com)
 	* QuickNet Internet PhoneJack and LineJack (http://www.quicknet.net)
 	* any full duplex sound card supported by ALSA or OSS
+	* any ISDN card supported by mISDN on Linux (BRI)
+	* The Xorcom AstriBank channel bank
         * VoiceTronix OpenLine products
 
 The are several drivers for ISDN BRI cards available from third party sources.
-Check the voip-info.org wiki for more information on chan_capi, chan_misdn and 
+Check the voip-info.org wiki for more information on chan_capi and 
 zaphfc.
 
-* UPGRADING FROM VERSION 1.0
+* UPGRADING FROM AN EARLIER VERSION
 
   If you are updating from a previous version of Asterisk, make sure you
 read the UPGRADE.txt file in the source directory. There are some files
@@ -67,7 +69,7 @@
   In order to discover new features to use, please check the configuration
 examples in the /configs directory of the source code distribution. 
 To discover the major new features of Asterisk 1.2, please visit 
-http://www.astricon.net/asterisk1-2/
+http://edvina.net/asterisk1-2/
 
 * NEW INSTALLATIONS
 

Modified: team/oej/multiparking-trunk/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/UPGRADE.txt?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/UPGRADE.txt (original)
+++ team/oej/multiparking-trunk/UPGRADE.txt Thu Mar 23 11:58:20 2006
@@ -37,6 +37,9 @@
   functions.  You are encouraged to move towards the associated dialplan
   function, as these variables will be removed in a future release.
 
+* The CDR-CSV variables uniqueid, userfield, and basing time on GMT are now 
+  adjustable from cdr.conf, instead of recompiling.
+
 Functions:
 
 * The function ${CHECK_MD5()} has been deprecated in favor of using an
@@ -50,16 +53,33 @@
 * The ENUMLOOKUP() function with the 'c' option (for counting the number of records),
   but the lookup fails to match any records, the returned value will now be "0" instead of blank.
 
+The IAX2 channel:
+
+* The "mailboxdetail" option has been deprecated.  Previously, if this option
+  was not enabled, the 2 byte MSGCOUNT information element would be set to all
+  1's to indicate there there is some number of messages waiting.  With this
+  option enabled, the number of new messages were placed in one byte and the
+  number of old messages are placed in the other.  This is now the default
+  (and the only) behavior.
+
 The SIP channel:
 
 * The "incominglimit" setting is replaced by the "call-limit" setting in sip.conf.
 
 Installation:
 
-* On BSD systems, the installation directories have changed to more "FreeBSDish" directories. On startup, Asterisk will look for the main configuration in /usr7local/etc/asterisk/asterisk.conf
+* On BSD systems, the installation directories have changed to more "FreeBSDish" directories. On startup, Asterisk will look for the main configuration in /usr/local/etc/asterisk/asterisk.conf
 If you have an old installation, you might want to remove the binaries and move the configuration files to the new locations. The following directories are now default:
 	ASTLIBDIR	/usr/local/lib/asterisk
 	ASTVARLIBDIR	/usr/local/share/asterisk
 	ASTETCDIR	/usr/local/etc/asterisk
 	ASTBINDIR	/usr/local/bin/asterisk
 	ASTSBINDIR	/usr/local/sbin/asterisk
+
+Sounds:
+
+* The phonetic sounds directory has been removed from the asterisk-sounds package
+  because they are now included directly in Asterisk.  However, it is important to
+  note that the phonetic sounds that existed in asterisk-sounds used a different
+  naming convention than the sounds in Asterisk.  For example, instead of alpha.gsm
+  and bravo.gsm, Asterisk has a_p.gsm and b_p.gsm.

Modified: team/oej/multiparking-trunk/agi/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/agi/Makefile?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/agi/Makefile (original)
+++ team/oej/multiparking-trunk/agi/Makefile Thu Mar 23 11:58:20 2006
@@ -11,17 +11,13 @@
 # the GNU General Public License
 #
 
-AGIS=agi-test.agi eagi-test eagi-sphinx-test
+AGIS=agi-test.agi eagi-test eagi-sphinx-test jukebox.agi
 
-CFLAGS+=
+CFLAGS+=-DNO_AST_MM
 
 LIBS=
 ifeq ($(OSARCH),SunOS)
   LIBS=-lsocket -lnsl ../strcompat.o
-endif
-
-ifeq ($(findstring BSD,${OSARCH}),BSD)
-  CFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include -L$(CROSS_COMPILE_TARGET)/usr/local/lib
 endif
 
 all: depend $(AGIS)

Modified: team/oej/multiparking-trunk/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/apps/app_dial.c?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/apps/app_dial.c (original)
+++ team/oej/multiparking-trunk/apps/app_dial.c Thu Mar 23 11:58:20 2006
@@ -112,9 +112,10 @@
 "           other than the number assigned to the caller.\n"
 "    g    - Proceed with dialplan execution at the current extension if the\n"
 "           destination channel hangs up.\n"
-"    G(context^exten^pri) - If the call is answered, transfer both parties to\n"
-"           the specified priority. Optionally, an extension, or extension and\n"
-"           context may be specified. Otherwise, the current extension is used.\n"
+"    G(context^exten^pri) - If the call is answered, transfer the calling party to\n"
+"           the specified priority and the called party to the specified priority+1.\n"
+"           Optionally, an extension, or extension and context may be specified. \n"
+"           Otherwise, the current extension is used.\n"
 "    h    - Allow the called party to hang up by sending the '*' DTMF digit.\n"
 "    H    - Allow the calling party to hang up by hitting the '*' DTMF digit.\n"
 "    j    - Jump to priority n+101 if all of the requested channels were busy.\n"

Modified: team/oej/multiparking-trunk/apps/app_externalivr.c
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/apps/app_externalivr.c?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/apps/app_externalivr.c (original)
+++ team/oej/multiparking-trunk/apps/app_externalivr.c Thu Mar 23 11:58:20 2006
@@ -65,7 +65,7 @@
 "will receive all DTMF events received on the channel, and notification\n"
 "if the channel is hung up. The application will not be forcibly terminated\n"
 "when the channel is hung up.\n"
-"See doc/README.externalivr for a protocol specification.\n";
+"See doc/externalivr.txt for a protocol specification.\n";
 
 /* XXX the parser in gcc 2.95 gets confused if you don't put a space between 'name' and the comma */
 #define ast_chan_log(level, channel, format, ...) ast_log(level, "%s: " format, channel->name , ## __VA_ARGS__)

Modified: team/oej/multiparking-trunk/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/apps/app_meetme.c?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/apps/app_meetme.c (original)
+++ team/oej/multiparking-trunk/apps/app_meetme.c Thu Mar 23 11:58:20 2006
@@ -1,3 +1,4 @@
+
 /*
  * Asterisk -- An open source telephony toolkit.
  *
@@ -70,18 +71,18 @@
 static const char *synopsis3 = "MeetMe conference Administration";
 
 static const char *descrip =
-"  MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe conference.\n"
-"If the conference number is omitted, the user will be prompted to enter\n"
-"one. \n"
-"User can exit the conference by hangup, or if the 'p' option is specified, by pressing '#'.\n"
+"  MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe\n"
+"conference.  If the conference number is omitted, the user will be prompted\n"
+"to enter one.  User can exit the conference by hangup, or if the 'p' option\n"
+"is specified, by pressing '#'.\n"
 "Please note: A ZAPTEL INTERFACE MUST BE INSTALLED FOR CONFERENCING TO WORK!\n\n"
 
 "The option string may contain zero or more of the following characters:\n"
 "      'a' -- set admin mode\n"
 "      'A' -- set marked mode\n"
 "      'b' -- run AGI script specified in ${MEETME_AGI_BACKGROUND}\n"
-"             Default: conf-background.agi\n"
-"             (Note: This does not work with non-Zap channels in the same conference)\n"
+"             Default: conf-background.agi  (Note: This does not work with\n"
+"             non-Zap channels in the same conference)\n"
 "      'c' -- announce user(s) count on joining a conference\n"
 "      'd' -- dynamically add conference\n"
 "      'D' -- dynamically add conference, prompting for a PIN\n"
@@ -90,31 +91,34 @@
 "      'i' -- announce user join/leave\n"
 "      'm' -- set monitor only mode (Listen only, no talking)\n"
 "      'M' -- enable music on hold when the conference has a single caller\n"
+"      'o' -- set talker optimization - treats talkers who aren't speaking as\n"
+"             being muted, meaning (a) No encode is done on transmission and\n"
+"             (b) Received audio that is not registered as talking is omitted\n"
+"             causing no buildup in background noise\n"
 "      'p' -- allow user to exit the conference by pressing '#'\n"
 "      'P' -- always prompt for the pin even if it is specified\n"
 "      'q' -- quiet mode (don't play enter/leave sounds)\n"
 "      'r' -- Record conference (records as ${MEETME_RECORDINGFILE}\n"
 "             using format ${MEETME_RECORDINGFORMAT}). Default filename is\n"
-"             meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is wav.\n"
+"             meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is\n"
+"             wav.\n"
 "      's' -- Present menu (user or admin) when '*' is received ('send' to menu)\n"
 "      't' -- set talk only mode. (Talk only, no listening)\n"
 "      'T' -- set talker detection (sent to manager interface and meetme list)\n"
-"      'o' -- set talker optimization - treats talkers who aren't speaking as\n"
-"             being muted, meaning (a) No encode is done on transmission and\n"
-"             (b) Received audio that is not registered as talking is omitted\n"
-"             causing no buildup in background noise\n"
 "      'v' -- video mode\n"
 "      'w' -- wait until the marked user enters the conference\n"
 "      'x' -- close the conference when last marked user exits\n"
 "      'X' -- allow user to exit the conference by entering a valid single\n"
 "             digit extension ${MEETME_EXIT_CONTEXT} or the current context\n"
-"             if that variable is not defined.\n";
+"             if that variable is not defined.\n"
+"      '1' -- do not play message when first person enters\n";
 
 static const char *descrip2 =
 "  MeetMeCount(confno[|var]): Plays back the number of users in the specified\n"
 "MeetMe conference. If var is specified, playback will be skipped and the value\n"
-"will be returned in the variable. Upon app completion, MeetMeCount will hangup the\n"
-"channel, unless priority n+1 exists, in which case priority progress will continue.\n"
+"will be returned in the variable. Upon app completion, MeetMeCount will hangup\n"
+"the channel, unless priority n+1 exists, in which case priority progress will\n"
+"continue.\n"
 "A ZAPTEL INTERFACE MUST BE INSTALLED FOR CONFERENCING FUNCTIONALITY.\n";
 
 static const char *descrip3 = 
@@ -147,9 +151,10 @@
 	struct ast_conf_user *firstuser;	/* Pointer to the first user struct */
 	struct ast_conf_user *lastuser;		/* Pointer to the last user struct */
 	time_t start;				/* Start time (s) */
-	int recording;				/* recording status */
-	int isdynamic;				/* Created on the fly? */
-	int locked;				/* Is the conference locked? */
+	int refcount;				/* reference count of usage */
+	unsigned int recording:2;				/* recording status */
+	unsigned int isdynamic:1;				/* Created on the fly? */
+	unsigned int locked:1;				/* Is the conference locked? */
 	pthread_t recordthread;			/* thread for recording */
 	pthread_attr_t attr;			/* thread attribute */
 	const char *recordingfilename;		/* Filename to record the Conference into */
@@ -243,31 +248,33 @@
 #define CONFFLAG_ALWAYSPROMPT (1 << 21)
 #define CONFFLAG_ANNOUNCEUSERCOUNT (1 << 22)	/* If set, when user joins the conference, they will be told the number of users that are already in */
 #define CONFFLAG_OPTIMIZETALKER (1 << 23)	/* If set, treats talking users as muted users */
+#define CONFFLAG_NOONLYPERSON (1 << 24)		/* If set, won't speak the extra prompt when the first person enters the conference */
 
 
 AST_APP_OPTIONS(meetme_opts, {
+	AST_APP_OPTION('A', CONFFLAG_MARKEDUSER ),
 	AST_APP_OPTION('a', CONFFLAG_ADMIN ),
+	AST_APP_OPTION('b', CONFFLAG_AGI ),
 	AST_APP_OPTION('c', CONFFLAG_ANNOUNCEUSERCOUNT ),
+	AST_APP_OPTION('D', CONFFLAG_DYNAMICPIN ),
+	AST_APP_OPTION('d', CONFFLAG_DYNAMIC ),
+	AST_APP_OPTION('E', CONFFLAG_EMPTYNOPIN ),
+	AST_APP_OPTION('e', CONFFLAG_EMPTY ),
+	AST_APP_OPTION('i', CONFFLAG_INTROUSER ),
+	AST_APP_OPTION('M', CONFFLAG_MOH ),
+	AST_APP_OPTION('m', CONFFLAG_MONITOR ),
+	AST_APP_OPTION('o', CONFFLAG_OPTIMIZETALKER ),
+	AST_APP_OPTION('P', CONFFLAG_ALWAYSPROMPT ),
+	AST_APP_OPTION('p', CONFFLAG_POUNDEXIT ),
+	AST_APP_OPTION('q', CONFFLAG_QUIET ),
+	AST_APP_OPTION('r', CONFFLAG_RECORDCONF ),
+	AST_APP_OPTION('s', CONFFLAG_STARMENU ),
 	AST_APP_OPTION('T', CONFFLAG_MONITORTALKER ),
-	AST_APP_OPTION('o', CONFFLAG_OPTIMIZETALKER ),
-	AST_APP_OPTION('i', CONFFLAG_INTROUSER ),
-	AST_APP_OPTION('m', CONFFLAG_MONITOR ),
-	AST_APP_OPTION('p', CONFFLAG_POUNDEXIT ),
-	AST_APP_OPTION('s', CONFFLAG_STARMENU ),
 	AST_APP_OPTION('t', CONFFLAG_TALKER ),
-	AST_APP_OPTION('q', CONFFLAG_QUIET ),
-	AST_APP_OPTION('M', CONFFLAG_MOH ),
+	AST_APP_OPTION('w', CONFFLAG_WAITMARKED ),
+	AST_APP_OPTION('X', CONFFLAG_EXIT_CONTEXT ),
 	AST_APP_OPTION('x', CONFFLAG_MARKEDEXIT ),
-	AST_APP_OPTION('X', CONFFLAG_EXIT_CONTEXT ),
-	AST_APP_OPTION('A', CONFFLAG_MARKEDUSER ),
-	AST_APP_OPTION('b', CONFFLAG_AGI ),
-	AST_APP_OPTION('w', CONFFLAG_WAITMARKED ),
-	AST_APP_OPTION('r', CONFFLAG_RECORDCONF ),
-	AST_APP_OPTION('d', CONFFLAG_DYNAMIC ),
-	AST_APP_OPTION('D', CONFFLAG_DYNAMICPIN ),
-	AST_APP_OPTION('e', CONFFLAG_EMPTY ),
-	AST_APP_OPTION('E', CONFFLAG_EMPTYNOPIN ),
-	AST_APP_OPTION('P', CONFFLAG_ALWAYSPROMPT ),
+	AST_APP_OPTION('1', CONFFLAG_NOONLYPERSON ),
 });
 
 static char *istalking(int x)
@@ -452,7 +459,7 @@
 		ast_autoservice_stop(chan);
 }
 
-static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin, int make, int dynamic)
+static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin, int make, int dynamic, int refcount)
 {
 	struct ast_conference *cnf;
 	struct zt_confinfo ztc;
@@ -472,6 +479,7 @@
 			ast_copy_string(cnf->confno, confno, sizeof(cnf->confno));
 			ast_copy_string(cnf->pin, pin, sizeof(cnf->pin));
 			ast_copy_string(cnf->pinadmin, pinadmin, sizeof(cnf->pinadmin));
+			cnf->refcount = 0;
 			cnf->markedusers = 0;
 			cnf->chan = ast_request("zap", AST_FORMAT_SLINEAR, "pseudo", NULL);
 			if (cnf->chan) {
@@ -518,7 +526,7 @@
 			/* Fill the conference struct */
 			cnf->start = time(NULL);
 			cnf->zapconf = ztc.confno;
-			cnf->isdynamic = dynamic;
+			cnf->isdynamic = dynamic ? 1 : 0;
 			cnf->firstuser = NULL;
 			cnf->lastuser = NULL;
 			cnf->locked = 0;
@@ -528,6 +536,9 @@
 		} 
 	}
  cnfout:
+	if (cnf){ 
+		cnf->refcount += refcount;
+	}
 	AST_LIST_UNLOCK(&confs);
 	return cnf;
 }
@@ -851,12 +862,19 @@
 	char meetmesecs[30] = "";
 	char exitcontext[AST_MAX_CONTEXT] = "";
 	char recordingtmp[AST_MAX_EXTENSION] = "";
+	char members[10] = "";
 	int dtmf;
 	ZT_BUFFERINFO bi;
 	char __buf[CONF_SIZE + AST_FRIENDLY_OFFSET];
 	char *buf = __buf + AST_FRIENDLY_OFFSET;
 
 	if (!(user = ast_calloc(1, sizeof(*user)))) {
+		AST_LIST_LOCK(&confs);
+		conf->refcount--;
+		if (!conf->refcount){
+			conf_free(conf);
+		}
+		AST_LIST_UNLOCK(&confs);
 		return ret;
 	}
 
@@ -920,6 +938,10 @@
 	user->adminflags = 0;
 	user->talking = -1;
 	conf->users++;
+	/* Update table */
+	snprintf(members, sizeof(members), "%d", conf->users);
+	ast_update_realtime("meetme", "confno", conf->confno, "members", members , NULL);
+
 	ast_mutex_unlock(&conf->playlock);
 
 	if (confflags & CONFFLAG_EXIT_CONTEXT) {
@@ -935,10 +957,12 @@
 		snprintf(user->namerecloc, sizeof(user->namerecloc),
 			 "%s/meetme/meetme-username-%s-%d", ast_config_AST_SPOOL_DIR,
 			 conf->confno, user->user_no);
-		ast_record_review(chan, "vm-rec-name", user->namerecloc, 10, "sln", &duration, NULL);
-	}
-
-	if (!(confflags & CONFFLAG_QUIET)) {
+		res = ast_record_review(chan, "vm-rec-name", user->namerecloc, 10, "sln", &duration, NULL);
+		if (res == -1)
+			goto outrun;
+	}
+
+	if ( !(confflags & (CONFFLAG_QUIET | CONFFLAG_NOONLYPERSON)) ) {
 		if (conf->users == 1 && !(confflags & CONFFLAG_WAITMARKED))
 			if (!ast_streamfile(chan, "conf-onlyperson", chan->language))
 				ast_waitstream(chan, "");
@@ -1665,11 +1689,17 @@
 		          "<no name>", hr, min, sec);
 
 		conf->users--;
+		conf->refcount--;
+		/* Update table */
+		snprintf(members, sizeof(members), "%d", conf->users);
+		ast_update_realtime("meetme", "confno", conf->confno, "members", members, NULL);
 		if (confflags & CONFFLAG_MARKEDUSER) 
 			conf->markedusers--;
 		if (!conf->users) {
-			/* No more users -- close this one out */
-			conf_free(conf);
+			/* close this one when no more users and no references*/
+			if (!conf->refcount){
+				conf_free(conf);
+			}
 		} else {
 			/* Remove the user struct */ 
 			if (user == conf->firstuser) {
@@ -1709,7 +1739,56 @@
 	return ret;
 }
 
-static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, int make, int dynamic, char *dynamic_pin)
+/*
+  This function looks for a conference via the RealTime module
+*/
+static struct ast_conference *find_conf_realtime(struct ast_channel *chan, char *confno, int make, int dynamic, char *dynamic_pin, int refcount)
+{
+
+	struct ast_variable *var;
+	struct ast_conference *cnf;
+
+	/* Check first in the conference list */
+	AST_LIST_LOCK(&confs);
+	AST_LIST_TRAVERSE(&confs, cnf, list) {
+		if (!strcmp(confno, cnf->confno)) 
+			break;
+	}
+	if (cnf){
+		cnf->refcount += refcount;
+	}
+	AST_LIST_UNLOCK(&confs);
+
+	if (!cnf) {
+		char *pin = NULL, *pinadmin = NULL; /* For temp use */
+
+		cnf = ast_calloc(1, sizeof(struct ast_conference));
+		if (!cnf) {
+			ast_log(LOG_ERROR, "Out of memory\n");
+			return NULL;
+		}
+
+		var = ast_load_realtime("meetme", "confno", confno, NULL);
+		while (var) {
+			if (!strcasecmp(var->name, "confno")) {
+				ast_copy_string(cnf->confno, var->value, sizeof(cnf->confno));
+			} else if (!strcasecmp(var->name, "pin")) {
+				pin = ast_strdupa(var->value);
+			} else if (!strcasecmp(var->name, "adminpin")) {
+				pinadmin = ast_strdupa(var->value);
+			}
+			var = var->next;
+		}
+		ast_variables_destroy(var);
+
+		cnf = build_conf(confno, pin ? pin : "", pinadmin ? pinadmin : "", make, dynamic, refcount);
+	}
+
+	return cnf;
+}
+
+
+static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, int make, int dynamic, char *dynamic_pin, int refcount)
 {
 	struct ast_config *cfg;
 	struct ast_variable *var;
@@ -1727,6 +1806,9 @@
 		if (!strcmp(confno, cnf->confno)) 
 			break;
 	}
+	if (cnf){
+		cnf->refcount += refcount;
+	}
 	AST_LIST_UNLOCK(&confs);
 
 	if (!cnf) {
@@ -1739,9 +1821,9 @@
 					if (ast_app_getdata(chan, "conf-getpin", dynamic_pin, AST_MAX_EXTENSION - 1, 0) < 0)
 						return NULL;
 				}
-				cnf = build_conf(confno, dynamic_pin, "", make, dynamic);
+				cnf = build_conf(confno, dynamic_pin, "", make, dynamic, refcount);
 			} else {
-				cnf = build_conf(confno, "", "", make, dynamic);
+				cnf = build_conf(confno, "", "", make, dynamic, refcount);
 			}
 		} else {
 			/* Check the config */
@@ -1750,28 +1832,20 @@
 				ast_log(LOG_WARNING, "No %s file :(\n", CONFIG_FILE_NAME);
 				return NULL;
 			}
-			var = ast_variable_browse(cfg, "rooms");
-			for (; var; var = var->next) {
+			for (var = ast_variable_browse(cfg, "rooms"); var; var = var->next) {
 				if (strcasecmp(var->name, "conf"))
 					continue;
 				
 				if (!(parse = ast_strdupa(var->value)))
 					return NULL;
 				
-				AST_STANDARD_APP_ARGS(args, parse);
+				AST_NONSTANDARD_APP_ARGS(args, parse, ',');
 				if (!strcasecmp(args.confno, confno)) {
 					/* Bingo it's a valid conference */
-					if (args.pin) {
-						if (args.pinadmin)
-							cnf = build_conf(args.confno, args.pin, args.pinadmin, make, dynamic);
-						else
-							cnf = build_conf(args.confno, args.pin, "", make, dynamic);
-					} else {
-						if (args.pinadmin)
-							cnf = build_conf(args.confno, "", args.pinadmin, make, dynamic);
-						else
-							cnf = build_conf(args.confno, "", "", make, dynamic);
-					}
+					cnf = build_conf(args.confno,
+							ast_strlen_zero(args.pin) ? "" : args.pin,
+							ast_strlen_zero(args.pinadmin) ? "" : args.pinadmin,
+							make, dynamic, refcount);
 					break;
 				}
 			}
@@ -1819,7 +1893,7 @@
 
 	AST_STANDARD_APP_ARGS(args, localdata);
 	
-	conf = find_conf(chan, args.confno, 0, 0, NULL);
+	conf = find_conf(chan, args.confno, 0, 0, NULL, 0);
 	if (conf)
 		count = conf->users;
 	else
@@ -1946,7 +2020,7 @@
 									AST_LIST_UNLOCK(&confs);
 									if (!found) {
 										/* At this point, we have a confno_tmp (static conference) that is empty */
-										if ((empty_no_pin && ((!stringp) || (stringp && (stringp[0] == '\0')))) || (!empty_no_pin)) {
+										if ((empty_no_pin && ast_strlen_zero(stringp)) || (!empty_no_pin)) {
 											/* Case 1:  empty_no_pin and pin is nonexistent (NULL)
 											 * Case 2:  empty_no_pin and pin is blank (but not NULL)
 											 * Case 3:  not empty_no_pin
@@ -2005,7 +2079,10 @@
 		}
 		if (!ast_strlen_zero(confno)) {
 			/* Check the validity of the conference */
-			cnf = find_conf(chan, confno, 1, dynamic, the_pin);
+			cnf = find_conf(chan, confno, 1, dynamic, the_pin, 1);
+			if (!cnf) {
+				cnf = find_conf_realtime(chan, confno, 1, dynamic, the_pin, 1);
+			}
 			if (!cnf) {
 				res = ast_streamfile(chan, "conf-invalid", chan->language);
 				if (!res)
@@ -2046,8 +2123,15 @@
 								res = ast_streamfile(chan, "conf-invalidpin", chan->language);
 								if (!res)
 									ast_waitstream(chan, AST_DIGIT_ANY);
-								if (res < 0)
+								if (res < 0) {
+									AST_LIST_LOCK(&confs);
+									cnf->refcount--;
+									if (!cnf->refcount){
+										conf_free(cnf);
+									}
+									AST_LIST_UNLOCK(&confs);
 									break;
+								}
 								pin[0] = res;
 								pin[1] = '\0';
 								res = -1;
@@ -2060,8 +2144,9 @@
 							allowretry = 0;
 							/* see if we need to get rid of the conference */
 							AST_LIST_LOCK(&confs);
-							if (!cnf->users) {
-								conf_free(cnf);	
+							cnf->refcount--;
+							if (!cnf->refcount) {
+								conf_free(cnf);
 							}
 							AST_LIST_UNLOCK(&confs);
 							break;

Modified: team/oej/multiparking-trunk/apps/app_mixmonitor.c
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/apps/app_mixmonitor.c?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/apps/app_mixmonitor.c (original)
+++ team/oej/multiparking-trunk/apps/app_mixmonitor.c Thu Mar 23 11:58:20 2006
@@ -217,6 +217,17 @@
 	if (option_verbose > 1)
 		ast_verbose(VERBOSE_PREFIX_2 "Begin MixMonitor Recording %s\n", name);
 	
+	if (mixmonitor->post_process) {
+		char *p;
+
+		for (p = mixmonitor->post_process; *p ; p++) {
+			if (*p == '^' && *(p+1) == '{') {
+				*p = '$';
+			}
+		}
+		pbx_substitute_variables_helper(mixmonitor->chan, mixmonitor->post_process, post_process, sizeof(post_process) - 1);
+	}
+
 	while (1) {
 		struct ast_frame *next;
 		int write;
@@ -251,17 +262,6 @@
 		ast_mutex_unlock(&spy.lock);
 	}
 	
-	if (mixmonitor->post_process) {
-		char *p;
-
-		for (p = mixmonitor->post_process; *p ; p++) {
-			if (*p == '^' && *(p+1) == '{') {
-				*p = '$';
-			}
-		}
-		pbx_substitute_variables_helper(mixmonitor->chan, mixmonitor->post_process, post_process, sizeof(post_process) - 1);
-	}
-
 	stopmon(mixmonitor->chan, &spy);
 
 	if (option_verbose > 1)

Modified: team/oej/multiparking-trunk/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/apps/app_queue.c?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/apps/app_queue.c (original)
+++ team/oej/multiparking-trunk/apps/app_queue.c Thu Mar 23 11:58:20 2006
@@ -952,7 +952,7 @@
 	}
 	AST_LIST_UNLOCK(&queues);
 
-	if (!q) {
+	if (!q || q->realtime) {
 		/*! \note Load from realtime before taking the global qlock, to avoid blocking all
 		   queue operations while waiting for the DB.
 
@@ -1624,6 +1624,14 @@
 static void record_abandoned(struct queue_ent *qe)
 {
 	ast_mutex_lock(&qe->parent->lock);
+	manager_event(EVENT_FLAG_AGENT, "QueueCallerAbandon",
+	              "Queue: %s\r\n"
+	              "Uniqueid: %s\r\n"
+	              "Position: %d\r\n"
+	              "OriginalPosition: %d\r\n"
+	              "HoldTime: %d\r\n",
+	              qe->parent->name, qe->chan->uniqueid, qe->pos, qe->opos, (int)(time(NULL) - qe->start));
+
 	qe->parent->callsabandoned++;
 	ast_mutex_unlock(&qe->parent->lock);
 }

Modified: team/oej/multiparking-trunk/apps/app_rpt.c
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking-trunk/apps/app_rpt.c?rev=14416&r1=14415&r2=14416&view=diff
==============================================================================
--- team/oej/multiparking-trunk/apps/app_rpt.c (original)
+++ team/oej/multiparking-trunk/apps/app_rpt.c Thu Mar 23 11:58:20 2006
@@ -20,8 +20,8 @@
 /*! \file
  *
  * \brief Radio Repeater / Remote Base program 
- *  version 0.39 12/19/05
- *
+ *  version 0.42 02/25/06
+ * 
  * \author Jim Dixon, WB6NIL <jim at lambdatel.com>
  *
  * \note Serious contributions by Steve RoDgers, WA6ZFT <hwstar at rodgers.sdcoxmail.com>
@@ -107,6 +107,9 @@
 /* maximum digits in DTMF buffer, and seconds after * for DTMF command timeout */
 
 #define	MAXDTMF 32
+#define	MAXMACRO 2048
+#define	MACROTIME 100
+#define	MACROPTIME 500
 #define	DTMF_TIMEOUT 3
 
 #define	DISC_TIME 10000  /* report disc after 10 seconds of no connect */
@@ -123,6 +126,7 @@
 
 #define	NODES "nodes"
 #define MEMORY "memory"
+#define MACRO "macro"
 #define	FUNCTIONS "functions"
 #define TELEMETRY "telemetry"
 #define MORSE "morse"
@@ -147,7 +151,7 @@
 enum{ID,PROC,TERM,COMPLETE,UNKEY,REMDISC,REMALREADY,REMNOTFOUND,REMGO,
 	CONNECTED,CONNFAIL,STATUS,TIMEOUT,ID1, STATS_TIME,
 	STATS_VERSION, IDTALKOVER, ARB_ALPHA, TEST_TONE, REV_PATCH,
-	TAILMSG};
+	TAILMSG, MACRO_NOTFOUND, MACRO_BUSY};
 
 enum {REM_SIMPLEX,REM_MINUS,REM_PLUS};
 
@@ -206,7 +210,7 @@
 #include "asterisk/say.h"
 #include "asterisk/localtime.h"
 
-static  char *tdesc = "Radio Repeater / Remote Base  version 0.39  12/19/2005";
+static  char *tdesc = "Radio Repeater / Remote Base  version 0.42  02/25/2006";
 
 static char *app = "Rpt";
 
@@ -247,7 +251,7 @@
 "            available to the phone user.\n"
 "\n";
 
-static int debug = 0;  /* Set this >0 for extra debug output */
+static int debug = 0;  /* FIXME Set this >0 for extra debug output */
 static int nrpts = 0;
 
 char *discstr = "!!DISCONNECT!!";
@@ -256,6 +260,7 @@
 
 struct	ast_config *cfg;
 
+STANDARD_LOCAL_USER;
 LOCAL_USER_DECL;
 
 #define	MSWAIT 200
@@ -362,15 +367,16 @@
 	char tonotify;
 	char enable;
 	char dtmfbuf[MAXDTMF];
+	char macrobuf[MAXMACRO];
 	char rem_dtmfbuf[MAXDTMF];
 	char cmdnode[50];
 	struct ast_channel *rxchannel,*txchannel;
 	struct ast_channel *pchannel,*txpchannel, *remchannel;
 	struct rpt_tele tele;
 	pthread_t rpt_call_thread,rpt_thread;
-	time_t rem_dtmf_time,dtmf_time_rem;
+	time_t dtmf_time,rem_dtmf_time,dtmf_time_rem;
 	int tailtimer,totimer,idtimer,txconf,conf,callmode,cidx,scantimer,tmsgtimer;
-	int mustid;
+	int mustid,tailid;
 	int politeid;
 	int dtmfidx,rem_dtmfidx;
 	long	retxtimer;
@@ -390,6 +396,7 @@
 	char funcchar;
 	char endchar;
 	char stopgen;
+	int macro_longest;
 	int phone_longestfunc;
 	int dphone_longestfunc;
 	int link_longestfunc;
@@ -403,8 +410,197 @@
 	int tailmessagen;
 	time_t disgorgetime;
 	time_t lastthreadrestarttime;
+	long	macrotimer;
+	char	*macro;
+	char	*startupmacro;
+	char	*memory;
 	char	nobusyout;
 } rpt_vars[MAXRPTS];	
+
+
+#ifdef	APP_RPT_LOCK_DEBUG
+
+#warning COMPILING WITH LOCK-DEBUGGING ENABLED!!
+
+#define	MAXLOCKTHREAD 100
+
+#define rpt_mutex_lock(x) _rpt_mutex_lock(x,myrpt,__LINE__)

[... 14575 lines stripped ...]


More information about the asterisk-commits mailing list