[svn-commits] jpeeler: branch may/chan_ooh323_rework r227755 - in /team/may/chan_ooh323_rew...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Nov 4 13:41:08 CST 2009


Author: jpeeler
Date: Wed Nov  4 13:41:00 2009
New Revision: 227755

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=227755
Log:
sync with trunk, looks like codec bit expansion work needs to be done here

Modified:
    team/may/chan_ooh323_rework/   (props changed)
    team/may/chan_ooh323_rework/CHANGES
    team/may/chan_ooh323_rework/Makefile
    team/may/chan_ooh323_rework/UPGRADE.txt
    team/may/chan_ooh323_rework/addons/format_mp3.c
    team/may/chan_ooh323_rework/apps/app_alarmreceiver.c
    team/may/chan_ooh323_rework/apps/app_amd.c
    team/may/chan_ooh323_rework/apps/app_chanspy.c
    team/may/chan_ooh323_rework/apps/app_controlplayback.c
    team/may/chan_ooh323_rework/apps/app_dahdibarge.c
    team/may/chan_ooh323_rework/apps/app_dial.c
    team/may/chan_ooh323_rework/apps/app_dictate.c
    team/may/chan_ooh323_rework/apps/app_disa.c
    team/may/chan_ooh323_rework/apps/app_echo.c
    team/may/chan_ooh323_rework/apps/app_externalivr.c
    team/may/chan_ooh323_rework/apps/app_fax.c
    team/may/chan_ooh323_rework/apps/app_festival.c
    team/may/chan_ooh323_rework/apps/app_followme.c
    team/may/chan_ooh323_rework/apps/app_forkcdr.c
    team/may/chan_ooh323_rework/apps/app_jack.c
    team/may/chan_ooh323_rework/apps/app_meetme.c
    team/may/chan_ooh323_rework/apps/app_milliwatt.c
    team/may/chan_ooh323_rework/apps/app_mp3.c
    team/may/chan_ooh323_rework/apps/app_nbscat.c
    team/may/chan_ooh323_rework/apps/app_queue.c
    team/may/chan_ooh323_rework/apps/app_record.c
    team/may/chan_ooh323_rework/apps/app_sms.c
    team/may/chan_ooh323_rework/apps/app_speech_utils.c
    team/may/chan_ooh323_rework/apps/app_talkdetect.c
    team/may/chan_ooh323_rework/apps/app_test.c
    team/may/chan_ooh323_rework/apps/app_url.c
    team/may/chan_ooh323_rework/apps/app_waitforring.c
    team/may/chan_ooh323_rework/bridges/bridge_softmix.c
    team/may/chan_ooh323_rework/channels/chan_agent.c
    team/may/chan_ooh323_rework/channels/chan_alsa.c
    team/may/chan_ooh323_rework/channels/chan_bridge.c
    team/may/chan_ooh323_rework/channels/chan_console.c
    team/may/chan_ooh323_rework/channels/chan_dahdi.c
    team/may/chan_ooh323_rework/channels/chan_gtalk.c
    team/may/chan_ooh323_rework/channels/chan_h323.c
    team/may/chan_ooh323_rework/channels/chan_iax2.c
    team/may/chan_ooh323_rework/channels/chan_jingle.c
    team/may/chan_ooh323_rework/channels/chan_local.c
    team/may/chan_ooh323_rework/channels/chan_mgcp.c
    team/may/chan_ooh323_rework/channels/chan_misdn.c
    team/may/chan_ooh323_rework/channels/chan_multicast_rtp.c
    team/may/chan_ooh323_rework/channels/chan_oss.c
    team/may/chan_ooh323_rework/channels/chan_phone.c
    team/may/chan_ooh323_rework/channels/chan_sip.c
    team/may/chan_ooh323_rework/channels/chan_skinny.c
    team/may/chan_ooh323_rework/channels/chan_unistim.c
    team/may/chan_ooh323_rework/channels/chan_vpb.cc
    team/may/chan_ooh323_rework/channels/h323/chan_h323.h
    team/may/chan_ooh323_rework/channels/iax2-parser.c
    team/may/chan_ooh323_rework/channels/iax2-parser.h
    team/may/chan_ooh323_rework/channels/iax2.h
    team/may/chan_ooh323_rework/channels/sig_analog.c
    team/may/chan_ooh323_rework/channels/sig_pri.c
    team/may/chan_ooh323_rework/channels/sig_pri.h
    team/may/chan_ooh323_rework/codecs/codec_dahdi.c
    team/may/chan_ooh323_rework/codecs/codec_ulaw.c
    team/may/chan_ooh323_rework/codecs/ex_adpcm.h
    team/may/chan_ooh323_rework/codecs/ex_alaw.h
    team/may/chan_ooh323_rework/codecs/ex_g722.h
    team/may/chan_ooh323_rework/codecs/ex_g726.h
    team/may/chan_ooh323_rework/codecs/ex_gsm.h
    team/may/chan_ooh323_rework/codecs/ex_ilbc.h
    team/may/chan_ooh323_rework/codecs/ex_lpc10.h
    team/may/chan_ooh323_rework/codecs/ex_speex.h
    team/may/chan_ooh323_rework/codecs/ex_ulaw.h
    team/may/chan_ooh323_rework/configs/cdr_custom.conf.sample
    team/may/chan_ooh323_rework/configs/extensions.conf.sample
    team/may/chan_ooh323_rework/configs/mgcp.conf.sample
    team/may/chan_ooh323_rework/configs/queues.conf.sample
    team/may/chan_ooh323_rework/configs/sip.conf.sample
    team/may/chan_ooh323_rework/configure
    team/may/chan_ooh323_rework/configure.ac
    team/may/chan_ooh323_rework/contrib/asterisk-ng-doxygen
    team/may/chan_ooh323_rework/contrib/init.d/rc.redhat.asterisk
    team/may/chan_ooh323_rework/doc/tex/localchannel.tex
    team/may/chan_ooh323_rework/formats/format_g723.c
    team/may/chan_ooh323_rework/formats/format_g726.c
    team/may/chan_ooh323_rework/formats/format_g729.c
    team/may/chan_ooh323_rework/formats/format_gsm.c
    team/may/chan_ooh323_rework/formats/format_h263.c
    team/may/chan_ooh323_rework/formats/format_h264.c
    team/may/chan_ooh323_rework/formats/format_ilbc.c
    team/may/chan_ooh323_rework/formats/format_jpeg.c
    team/may/chan_ooh323_rework/formats/format_ogg_vorbis.c
    team/may/chan_ooh323_rework/formats/format_pcm.c
    team/may/chan_ooh323_rework/formats/format_siren14.c
    team/may/chan_ooh323_rework/formats/format_siren7.c
    team/may/chan_ooh323_rework/formats/format_sln.c
    team/may/chan_ooh323_rework/formats/format_sln16.c
    team/may/chan_ooh323_rework/formats/format_vox.c
    team/may/chan_ooh323_rework/formats/format_wav.c
    team/may/chan_ooh323_rework/formats/format_wav_gsm.c
    team/may/chan_ooh323_rework/funcs/func_cdr.c
    team/may/chan_ooh323_rework/funcs/func_speex.c
    team/may/chan_ooh323_rework/funcs/func_volume.c
    team/may/chan_ooh323_rework/include/asterisk/abstract_jb.h
    team/may/chan_ooh323_rework/include/asterisk/audiohook.h
    team/may/chan_ooh323_rework/include/asterisk/autoconfig.h.in
    team/may/chan_ooh323_rework/include/asterisk/bridging.h
    team/may/chan_ooh323_rework/include/asterisk/bridging_technology.h
    team/may/chan_ooh323_rework/include/asterisk/cdr.h
    team/may/chan_ooh323_rework/include/asterisk/channel.h
    team/may/chan_ooh323_rework/include/asterisk/compat.h
    team/may/chan_ooh323_rework/include/asterisk/doxyref.h
    team/may/chan_ooh323_rework/include/asterisk/frame.h
    team/may/chan_ooh323_rework/include/asterisk/manager.h
    team/may/chan_ooh323_rework/include/asterisk/pbx.h
    team/may/chan_ooh323_rework/include/asterisk/rtp_engine.h
    team/may/chan_ooh323_rework/include/asterisk/slin.h
    team/may/chan_ooh323_rework/include/asterisk/slinfactory.h
    team/may/chan_ooh323_rework/include/asterisk/translate.h
    team/may/chan_ooh323_rework/include/asterisk/unaligned.h
    team/may/chan_ooh323_rework/main/Makefile
    team/may/chan_ooh323_rework/main/abstract_jb.c
    team/may/chan_ooh323_rework/main/app.c
    team/may/chan_ooh323_rework/main/asterisk.c
    team/may/chan_ooh323_rework/main/asterisk.exports
    team/may/chan_ooh323_rework/main/audiohook.c
    team/may/chan_ooh323_rework/main/autoservice.c
    team/may/chan_ooh323_rework/main/bridging.c
    team/may/chan_ooh323_rework/main/cdr.c
    team/may/chan_ooh323_rework/main/channel.c
    team/may/chan_ooh323_rework/main/dial.c
    team/may/chan_ooh323_rework/main/dsp.c
    team/may/chan_ooh323_rework/main/features.c
    team/may/chan_ooh323_rework/main/file.c
    team/may/chan_ooh323_rework/main/frame.c
    team/may/chan_ooh323_rework/main/http.c
    team/may/chan_ooh323_rework/main/indications.c
    team/may/chan_ooh323_rework/main/manager.c
    team/may/chan_ooh323_rework/main/pbx.c
    team/may/chan_ooh323_rework/main/rtp_engine.c
    team/may/chan_ooh323_rework/main/slinfactory.c
    team/may/chan_ooh323_rework/main/strcompat.c
    team/may/chan_ooh323_rework/main/translate.c
    team/may/chan_ooh323_rework/main/udptl.c
    team/may/chan_ooh323_rework/pbx/pbx_config.c
    team/may/chan_ooh323_rework/pbx/pbx_spool.c
    team/may/chan_ooh323_rework/res/res_adsi.c
    team/may/chan_ooh323_rework/res/res_agi.c
    team/may/chan_ooh323_rework/res/res_musiconhold.c
    team/may/chan_ooh323_rework/res/res_rtp_asterisk.c
    team/may/chan_ooh323_rework/res/res_rtp_multicast.c
    team/may/chan_ooh323_rework/static-http/prototype.js

Propchange: team/may/chan_ooh323_rework/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Nov  4 13:41:00 2009
@@ -1,1 +1,1 @@
-//team/may/chan_ooh323_rework:1-225766 /trunk:1-226526
+//team/may/chan_ooh323_rework:1-225766 /trunk:1-227750

Modified: team/may/chan_ooh323_rework/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/CHANGES?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/CHANGES (original)
+++ team/may/chan_ooh323_rework/CHANGES Wed Nov  4 13:41:00 2009
@@ -53,6 +53,9 @@
  * Added 'unsolicited_mailbox' configuration option which specifies the virtual mailbox
    that the new/old count should be stored on if an unsolicited MWI NOTIFY message is
    received.
+ * Added 'use_q850_reason' configuration option for generating and parsing
+   if available  Reason: Q.850;cause=<cause code> header. It is implemented
+   in some gateways for better passing PRI/SS7 cause codes via SIP.
 
 IAX2 Changes
 -----------
@@ -64,6 +67,8 @@
  * Added ability to preset channel variables on indicated lines with the setvar
    configuration option.  Also, clearvars=all resets the list of variables back
    to none.
+ * PacketCable NCS 1.0 support has been added for Docsis/Eurodocsis Networks.
+   See configs/res_pktccops.conf for more information.
 
 Applications
 ------------
@@ -272,6 +277,8 @@
  * Multiple files and formats can now be specified in cdr_custom.conf.
  * cdr_syslog has been added which allows CDRs to be written directly to syslog.
    See configs/cdr_syslog.conf.sample for more information.
+ * A 'sequence' field has been added to CDRs which can be combined with
+   linkedid or uniqueid to uniquely identify a CDR.
 
 Calendaring for Asterisk
 ------------------------

Modified: team/may/chan_ooh323_rework/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/Makefile?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/Makefile (original)
+++ team/may/chan_ooh323_rework/Makefile Wed Nov  4 13:41:00 2009
@@ -276,7 +276,7 @@
 endif
 
 ifeq ($(OSARCH),SunOS)
-  _ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include -D_XPG4_2
+  _ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include -D_XPG4_2 -D__EXTENSIONS__
 endif
 
 ASTERISKVERSION:=$(shell GREP=$(GREP) AWK=$(AWK) build_tools/make_version .)
@@ -306,7 +306,7 @@
 ifneq ($(findstring darwin,$(OSARCH)),)
   _ASTCFLAGS+=-D__Darwin__
   SOLINK=-bundle -Xlinker -macosx_version_min -Xlinker 10.4 -Xlinker -undefined -Xlinker dynamic_lookup -force_flat_namespace /usr/lib/bundle1.o
-  _ASTLDFLAGS+= /usr/lib/bundle1.o -L/usr/local/lib
+  _ASTLDFLAGS+=  -L/usr/local/lib
 else
 # These are used for all but Darwin
   SOLINK=-shared

Modified: team/may/chan_ooh323_rework/UPGRADE.txt
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/UPGRADE.txt?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/UPGRADE.txt (original)
+++ team/may/chan_ooh323_rework/UPGRADE.txt Wed Nov  4 13:41:00 2009
@@ -18,7 +18,7 @@
 ===
 ===========================================================
 
-From 1.6.2 to 1.6.3:
+From 1.6.2 to 1.8:
 
 * Asterisk-addons no longer exists as an independent package.  Those modules
   now live in the addons directory of the main Asterisk source tree.  They
@@ -53,7 +53,7 @@
   the channel name to infer what B channel a call is using and to avoid name
   collisions, the channel name format is changed.
   The new channel naming for PRI channels is:
-  DAHDI/ISDN-<span>-<sequence-number>
+  DAHDI/i<span>/<number>[:<subaddress>]-<sequence-number>
 
 From 1.6.1 to 1.6.2:
 

Modified: team/may/chan_ooh323_rework/addons/format_mp3.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/addons/format_mp3.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/addons/format_mp3.c (original)
+++ team/may/chan_ooh323_rework/addons/format_mp3.c Wed Nov  4 13:41:00 2009
@@ -224,7 +224,7 @@
 	p->offset += p->buflen;
 	delay = p->buflen/2;
 	s->fr.frametype = AST_FRAME_VOICE;
-	s->fr.subclass = AST_FORMAT_SLINEAR;
+	s->fr.subclass.codec = AST_FORMAT_SLINEAR;
 	AST_FRAME_SET_BUFFER(&s->fr, s->buf, AST_FRIENDLY_OFFSET, p->buflen);
 	s->fr.mallocd = 0;
 	s->fr.samples = delay;

Modified: team/may/chan_ooh323_rework/apps/app_alarmreceiver.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_alarmreceiver.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_alarmreceiver.c (original)
+++ team/may/chan_ooh323_rework/apps/app_alarmreceiver.c Wed Nov  4 13:41:00 2009
@@ -191,7 +191,7 @@
 
 		if (f->frametype == AST_FRAME_VOICE) {
 			wf.frametype = AST_FRAME_VOICE;
-			wf.subclass = AST_FORMAT_ULAW;
+			wf.subclass.codec = AST_FORMAT_ULAW;
 			wf.offset = AST_FRIENDLY_OFFSET;
 			wf.mallocd = 0;
 			wf.data.ptr = tone_block.buf;
@@ -260,7 +260,7 @@
 		}
 
 		/* If they hung up, leave */
-		if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP)) {
+		if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass.integer == AST_CONTROL_HANGUP)) {
 			if (f->data.uint32) {
 				chan->hangupcause = f->data.uint32;
 			}
@@ -275,7 +275,7 @@
 			continue;
 		}
 
-		digit_string[i++] = f->subclass;  /* save digit */
+		digit_string[i++] = f->subclass.integer;  /* save digit */
 
 		ast_frfree(f);
 

Modified: team/may/chan_ooh323_rework/apps/app_amd.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_amd.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_amd.c (original)
+++ team/may/chan_ooh323_rework/apps/app_amd.c Wed Nov  4 13:41:00 2009
@@ -188,7 +188,7 @@
 		AST_APP_ARG(argMaximumWordLength);
 	);
 
-	ast_verb(3, "AMD: %s %s %s (Fmt: %d)\n", chan->name ,chan->cid.cid_ani, chan->cid.cid_rdnis, chan->readformat);
+	ast_verb(3, "AMD: %s %s %s (Fmt: %s)\n", chan->name, chan->cid.cid_ani, chan->cid.cid_rdnis, ast_getformatname(chan->readformat));
 
 	/* Lets parse the arguments. */
 	if (!ast_strlen_zero(parse)) {

Modified: team/may/chan_ooh323_rework/apps/app_chanspy.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_chanspy.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_chanspy.c (original)
+++ team/may/chan_ooh323_rework/apps/app_chanspy.c Wed Nov  4 13:41:00 2009
@@ -611,7 +611,7 @@
 			continue;
 		}
 		
-		res = (f->frametype == AST_FRAME_DTMF) ? f->subclass : 0;
+		res = (f->frametype == AST_FRAME_DTMF) ? f->subclass.integer : 0;
 		ast_frfree(f);
 		if (!res)
 			continue;

Modified: team/may/chan_ooh323_rework/apps/app_controlplayback.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_controlplayback.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_controlplayback.c (original)
+++ team/may/chan_ooh323_rework/apps/app_controlplayback.c Wed Nov  4 13:41:00 2009
@@ -175,7 +175,7 @@
 		else
 			args.rev = NULL;
 	}
-	ast_log(LOG_WARNING, "args.fwd = %s, args.rew = %s\n", args.fwd, args.rev);
+	ast_debug(1, "Forward key = %s, Rewind key = %s\n", args.fwd, args.rev);
 	if (args.stop && !is_on_phonepad(*args.stop))
 		args.stop = NULL;
 	if (args.pause && !is_on_phonepad(*args.pause))

Modified: team/may/chan_ooh323_rework/apps/app_dahdibarge.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_dahdibarge.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_dahdibarge.c (original)
+++ team/may/chan_ooh323_rework/apps/app_dahdibarge.c Wed Nov  4 13:41:00 2009
@@ -208,17 +208,17 @@
 			f = ast_read(c);
 			if (!f) 
 				break;
-			if ((f->frametype == AST_FRAME_DTMF) && (f->subclass == '#')) {
+			if ((f->frametype == AST_FRAME_DTMF) && (f->subclass.integer == '#')) {
 				ret = 0;
 				ast_frfree(f);
 				break;
 			} else if (fd != chan->fds[0]) {
 				if (f->frametype == AST_FRAME_VOICE) {
-					if (f->subclass == AST_FORMAT_ULAW) {
+					if (f->subclass.codec == AST_FORMAT_ULAW) {
 						/* Carefully write */
 						careful_write(fd, f->data.ptr, f->datalen);
 					} else
-						ast_log(LOG_WARNING, "Huh?  Got a non-ulaw (%d) frame in the conference\n", f->subclass);
+						ast_log(LOG_WARNING, "Huh?  Got a non-ulaw (%s) frame in the conference\n", ast_getformatname(f->subclass.codec));
 				}
 			}
 			ast_frfree(f);
@@ -227,7 +227,7 @@
 			if (res > 0) {
 				memset(&fr, 0, sizeof(fr));
 				fr.frametype = AST_FRAME_VOICE;
-				fr.subclass = AST_FORMAT_ULAW;
+				fr.subclass.codec = AST_FORMAT_ULAW;
 				fr.datalen = res;
 				fr.samples = res;
 				fr.data.ptr = buf;

Modified: team/may/chan_ooh323_rework/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_dial.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_dial.c (original)
+++ team/may/chan_ooh323_rework/apps/app_dial.c Wed Nov  4 13:41:00 2009
@@ -264,6 +264,13 @@
 					Macro()</para></warning>
 				</option>
 				<option name="n">
+				        <argument name="delete">
+					        <para>With <replaceable>delete</replaceable> either not specified or set to <literal>0</literal>,
+						the recorded introduction will not be deleted if the caller hangs up while the remote party has not
+						yet answered.</para>
+						<para>With <replaceable>delete</replaceable> set to <literal>1</literal>, the introduction will
+						always be deleted.</para>
+					</argument>
 					<para>This option is a modifier for the call screening/privacy mode. (See the 
 					<literal>p</literal> and <literal>P</literal> options.) It specifies
 					that no introductions are to be saved in the <directory>priv-callerintros</directory>
@@ -523,6 +530,7 @@
 	OPT_ARG_PRIVACY,
 	OPT_ARG_DURATION_STOP,
 	OPT_ARG_OPERMODE,
+	OPT_ARG_SCREEN_NOINTRO,
 	/* note: this entry _MUST_ be the last one in the enum */
 	OPT_ARG_ARRAY_SIZE,
 };
@@ -547,7 +555,7 @@
 	AST_APP_OPTION_ARG('L', OPT_DURATION_LIMIT, OPT_ARG_DURATION_LIMIT),
 	AST_APP_OPTION_ARG('m', OPT_MUSICBACK, OPT_ARG_MUSICBACK),
 	AST_APP_OPTION_ARG('M', OPT_CALLEE_MACRO, OPT_ARG_CALLEE_MACRO),
-	AST_APP_OPTION('n', OPT_SCREEN_NOINTRO),
+	AST_APP_OPTION_ARG('n', OPT_SCREEN_NOINTRO, OPT_ARG_SCREEN_NOINTRO),
 	AST_APP_OPTION('N', OPT_SCREEN_NOCALLERID),
 	AST_APP_OPTION('o', OPT_ORIGINAL_CLID),
 	AST_APP_OPTION_ARG('O', OPT_OPERMODE, OPT_ARG_OPERMODE),
@@ -996,7 +1004,7 @@
 				continue;
 			}
 			if (f->frametype == AST_FRAME_CONTROL) {
-				switch(f->subclass) {
+				switch (f->subclass.integer) {
 				case AST_CONTROL_ANSWER:
 					/* This is our guy if someone answered. */
 					if (!peer) {
@@ -1137,7 +1145,7 @@
 					}
 					break;
 				default:
-					ast_debug(1, "Dunno what to do with control type %d\n", f->subclass);
+					ast_debug(1, "Dunno what to do with control type %d\n", f->subclass.integer);
 				}
 			} else if (single) {
 				switch (f->frametype) {
@@ -1149,7 +1157,7 @@
 						}
 						break;
 					case AST_FRAME_HTML:
-						if (!ast_test_flag64(outgoing, DIAL_NOFORWARDHTML) && ast_channel_sendhtml(in, f->subclass, f->data.ptr, f->datalen) == -1) {
+						if (!ast_test_flag64(outgoing, DIAL_NOFORWARDHTML) && ast_channel_sendhtml(in, f->subclass.integer, f->data.ptr, f->datalen) == -1) {
 							ast_log(LOG_WARNING, "Unable to send URL\n");
 						}
 						break;
@@ -1167,7 +1175,7 @@
 			else if (!f || (f->frametype != AST_FRAME_VOICE))
 				printf("Hangup received on %s\n", in->name);
 #endif
-			if (!f || ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP))) {
+			if (!f || ((f->frametype == AST_FRAME_CONTROL) && (f->subclass.integer == AST_CONTROL_HANGUP))) {
 				/* Got hung up */
 				*to = -1;
 				strcpy(pa->status, "CANCEL");
@@ -1187,11 +1195,11 @@
 					const char *context;
 					ast_channel_lock(in);
 					context = pbx_builtin_getvar_helper(in, "EXITCONTEXT");
-					if (onedigit_goto(in, context, (char) f->subclass, 1)) {
-						ast_verb(3, "User hit %c to disconnect call.\n", f->subclass);
+					if (onedigit_goto(in, context, (char) f->subclass.integer, 1)) {
+						ast_verb(3, "User hit %c to disconnect call.\n", f->subclass.integer);
 						*to = 0;
 						ast_cdr_noanswer(in->cdr);
-						*result = f->subclass;
+						*result = f->subclass.integer;
 						strcpy(pa->status, "CANCEL");
 						ast_frfree(f);
 						ast_channel_unlock(in);
@@ -1201,7 +1209,7 @@
 				}
 
 				if (ast_test_flag64(peerflags, OPT_CALLER_HANGUP) &&
-					detect_disconnect(in, f->subclass, featurecode)) {
+					detect_disconnect(in, f->subclass.integer, featurecode)) {
 					ast_verb(3, "User requested call disconnect.\n");
 					*to = 0;
 					strcpy(pa->status, "CANCEL");
@@ -1213,7 +1221,7 @@
 
 			/* Forward HTML stuff */
 			if (single && (f->frametype == AST_FRAME_HTML) && !ast_test_flag64(outgoing, DIAL_NOFORWARDHTML))
-				if (ast_channel_sendhtml(outgoing->chan, f->subclass, f->data.ptr, f->datalen) == -1)
+				if (ast_channel_sendhtml(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen) == -1)
 					ast_log(LOG_WARNING, "Unable to send URL\n");
 
 			if (single && ((f->frametype == AST_FRAME_VOICE) || (f->frametype == AST_FRAME_DTMF_BEGIN) || (f->frametype == AST_FRAME_DTMF_END)))  {
@@ -1221,16 +1229,16 @@
 					ast_log(LOG_WARNING, "Unable to forward voice or dtmf\n");
 			}
 			if (single && (f->frametype == AST_FRAME_CONTROL)) { 
-				if ((f->subclass == AST_CONTROL_HOLD) ||
-				    (f->subclass == AST_CONTROL_UNHOLD) ||
-				    (f->subclass == AST_CONTROL_VIDUPDATE) ||
-				    (f->subclass == AST_CONTROL_SRCUPDATE) ||
-				    (f->subclass == AST_CONTROL_REDIRECTING)) {
-					ast_verb(3, "%s requested special control %d, passing it to %s\n", in->name, f->subclass, outgoing->chan->name);
-					ast_indicate_data(outgoing->chan, f->subclass, f->data.ptr, f->datalen);
-				} else if (f->subclass == AST_CONTROL_CONNECTED_LINE) {
+				if ((f->subclass.integer == AST_CONTROL_HOLD) ||
+				    (f->subclass.integer == AST_CONTROL_UNHOLD) ||
+				    (f->subclass.integer == AST_CONTROL_VIDUPDATE) ||
+				    (f->subclass.integer == AST_CONTROL_SRCUPDATE) ||
+				    (f->subclass.integer == AST_CONTROL_REDIRECTING)) {
+					ast_verb(3, "%s requested special control %d, passing it to %s\n", in->name, f->subclass.integer, outgoing->chan->name);
+					ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
+				} else if (f->subclass.integer == AST_CONTROL_CONNECTED_LINE) {
 					if (ast_channel_connected_line_macro(in, outgoing->chan, f, 0, 1)) {
-						ast_indicate_data(outgoing->chan, f->subclass, f->data.ptr, f->datalen);
+						ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
 					}
 				}
 			}
@@ -1581,6 +1589,7 @@
 	int result = 0;
 	char *parse;
 	int opermode = 0;
+	int delprivintro = 0;
 	AST_DECLARE_APP_ARGS(args,
 		AST_APP_ARG(peers);
 		AST_APP_ARG(timeout);
@@ -1619,6 +1628,15 @@
 		ast_log(LOG_WARNING, "Dial requires an argument (technology/number)\n");
 		pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);
 		goto done;
+	}
+
+	if (ast_test_flag64(&opts, OPT_SCREEN_NOINTRO) && !ast_strlen_zero(opt_args[OPT_ARG_SCREEN_NOINTRO])) {
+		delprivintro = atoi(opt_args[OPT_ARG_SCREEN_NOINTRO]);
+
+		if (delprivintro < 0 || delprivintro > 1) {
+			ast_log(LOG_WARNING, "Unknown argument %d specified to n option, ignoring\n", delprivintro);
+			delprivintro = 0;
+		}
 	}
 
 	if (ast_test_flag64(&opts, OPT_OPERMODE)) {
@@ -2323,6 +2341,16 @@
 		sentringing = 0;
 		ast_indicate(chan, -1);
 	}
+
+	if (delprivintro && ast_fileexists(pa.privintro, NULL, NULL) > 0) {
+		ast_filedelete(pa.privintro, NULL);
+		if (ast_fileexists(pa.privintro, NULL, NULL) > 0) {
+			ast_log(LOG_NOTICE, "privacy: ast_filedelete didn't do its job on %s\n", pa.privintro);
+		} else {
+			ast_verb(3, "Successfully deleted %s intro file\n", pa.privintro);
+		}
+	}
+
 	ast_channel_early_bridge(chan, NULL);
 	hanguptree(outgoing, NULL, 0); /* In this case, there's no answer anywhere */
 	pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);

Modified: team/may/chan_ooh323_rework/apps/app_dictate.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_dictate.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_dictate.c (original)
+++ team/may/chan_ooh323_rework/apps/app_dictate.c Wed Nov  4 13:41:00 2009
@@ -165,7 +165,7 @@
 		samples = 0;
 		while (!done && ((res = ast_waitfor(chan, -1)) > -1) && fs && (f = ast_read(chan))) {
 			if (digit) {
-				struct ast_frame fr = {AST_FRAME_DTMF, digit};
+				struct ast_frame fr = {AST_FRAME_DTMF, { .integer = digit } };
 				ast_queue_frame(chan, &fr);
 				digit = 0;
 			}
@@ -173,7 +173,7 @@
 				int got = 1;
 				switch(mode) {
 				case DMODE_PLAY:
-					switch(f->subclass) {
+					switch (f->subclass.integer) {
 					case '1':
 						ast_set_flag(&flags, DFLAG_PAUSE);
 						mode = DMODE_RECORD;
@@ -202,7 +202,7 @@
 					}
 					break;
 				case DMODE_RECORD:
-					switch(f->subclass) {
+					switch (f->subclass.integer) {
 					case '1':
 						ast_set_flag(&flags, DFLAG_PAUSE);
 						mode = DMODE_PLAY;
@@ -219,7 +219,7 @@
 					got = 0;
 				}
 				if (!got) {
-					switch(f->subclass) {
+					switch (f->subclass.integer) {
 					case '#':
 						done = 1;
 						continue;

Modified: team/may/chan_ooh323_rework/apps/app_disa.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_disa.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_disa.c (original)
+++ team/may/chan_ooh323_rework/apps/app_disa.c Wed Nov  4 13:41:00 2009
@@ -220,7 +220,7 @@
 			return -1;
 		}
 
-		if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP)) {
+		if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass.integer == AST_CONTROL_HANGUP)) {
 			if (f->data.uint32)
 				chan->hangupcause = f->data.uint32;
 			ast_frfree(f);
@@ -234,7 +234,7 @@
 			continue;
 		}
 
-		j = f->subclass;  /* save digit */
+		j = f->subclass.integer;  /* save digit */
 		ast_frfree(f);
 
 		if (!i) {

Modified: team/may/chan_ooh323_rework/apps/app_echo.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_echo.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_echo.c (original)
+++ team/may/chan_ooh323_rework/apps/app_echo.c Wed Nov  4 13:41:00 2009
@@ -51,7 +51,7 @@
 static int echo_exec(struct ast_channel *chan, const char *data)
 {
 	int res = -1;
-	int format;
+	format_t format;
 
 	format = ast_best_codec(chan->nativeformats);
 	ast_set_write_format(chan, format);
@@ -68,7 +68,7 @@
 			ast_frfree(f);
 			goto end;
 		}
-		if ((f->frametype == AST_FRAME_DTMF) && (f->subclass == '#')) {
+		if ((f->frametype == AST_FRAME_DTMF) && (f->subclass.integer == '#')) {
 			res = 0;
 			ast_frfree(f);
 			goto end;

Modified: team/may/chan_ooh323_rework/apps/app_externalivr.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_externalivr.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_externalivr.c (original)
+++ team/may/chan_ooh323_rework/apps/app_externalivr.c Wed Nov  4 13:41:00 2009
@@ -627,7 +627,7 @@
  				break;
  			}
  			if (f->frametype == AST_FRAME_DTMF) {
- 				send_eivr_event(eivr_events, f->subclass, NULL, chan);
+ 				send_eivr_event(eivr_events, f->subclass.integer, NULL, chan);
  				if (u->option_autoclear) {
   					if (!u->abort_current_sound && !u->playing_silence)
  						send_eivr_event(eivr_events, 'T', NULL, chan);
@@ -640,7 +640,7 @@
   						u->abort_current_sound = 1;
   					AST_LIST_UNLOCK(&u->playlist);
   				}
- 			} else if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP)) {
+ 			} else if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass.integer == AST_CONTROL_HANGUP)) {
  				ast_chan_log(LOG_NOTICE, chan, "Got AST_CONTROL_HANGUP\n");
  				send_eivr_event(eivr_events, 'H', NULL, chan);
 				if (f->data.uint32) {

Modified: team/may/chan_ooh323_rework/apps/app_fax.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_fax.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_fax.c (original)
+++ team/may/chan_ooh323_rework/apps/app_fax.c Wed Nov  4 13:41:00 2009
@@ -180,7 +180,7 @@
 
 	struct ast_frame outf = {
 		.frametype = AST_FRAME_MODEM,
-		.subclass = AST_MODEM_T38,
+		.subclass.integer = AST_MODEM_T38,
 		.src = __FUNCTION__,
 	};
 
@@ -327,7 +327,7 @@
     
 	struct ast_frame outf = {
 		.frametype = AST_FRAME_VOICE,
-		.subclass = AST_FORMAT_SLINEAR,
+		.subclass.codec = AST_FORMAT_SLINEAR,
 		.src = __FUNCTION__,
 	};
 
@@ -413,7 +413,7 @@
 					return -1;
 				}
 				if ((inf->frametype == AST_FRAME_CONTROL) &&
-				    (inf->subclass == AST_CONTROL_T38_PARAMETERS) &&
+				    (inf->subclass.integer == AST_CONTROL_T38_PARAMETERS) &&
 				    (inf->datalen == sizeof(t38_parameters))) {
 					struct ast_control_t38_parameters *parameters = inf->data.ptr;
 					
@@ -517,12 +517,12 @@
 			break;
 		}
 
-		ast_debug(10, "frame %d/%d, len=%d\n", inf->frametype, inf->subclass, inf->datalen);
+		ast_debug(10, "frame %d/%llu, len=%d\n", inf->frametype, (unsigned long long) inf->subclass.codec, inf->datalen);
 
 		/* Check the frame type. Format also must be checked because there is a chance
 		   that a frame in old format was already queued before we set channel format
 		   to slinear so it will still be received by ast_read */
-		if (inf->frametype == AST_FRAME_VOICE && inf->subclass == AST_FORMAT_SLINEAR) {
+		if (inf->frametype == AST_FRAME_VOICE && inf->subclass.codec == AST_FORMAT_SLINEAR) {
 			if (fax_rx(&fax, inf->data.ptr, inf->samples) < 0) {
 				/* I know fax_rx never returns errors. The check here is for good style only */
 				ast_log(LOG_WARNING, "fax_rx returned error\n");
@@ -534,7 +534,7 @@
 				last_state = t30state->state;
 			}
 		} else if ((inf->frametype == AST_FRAME_CONTROL) &&
-			   (inf->subclass == AST_CONTROL_T38_PARAMETERS)) {
+			   (inf->subclass.integer == AST_CONTROL_T38_PARAMETERS)) {
 			struct ast_control_t38_parameters *parameters = inf->data.ptr;
 
 			if (parameters->request_response == AST_T38_NEGOTIATED) {
@@ -678,15 +678,15 @@
 			break;
 		}
 
-		ast_debug(10, "frame %d/%d, len=%d\n", inf->frametype, inf->subclass, inf->datalen);
-
-		if (inf->frametype == AST_FRAME_MODEM && inf->subclass == AST_MODEM_T38) {
+		ast_debug(10, "frame %d/%d, len=%d\n", inf->frametype, inf->subclass.integer, inf->datalen);
+
+		if (inf->frametype == AST_FRAME_MODEM && inf->subclass.integer == AST_MODEM_T38) {
 			t38_core_rx_ifp_packet(t38state, inf->data.ptr, inf->datalen, inf->seqno);
 			if (last_state != t30state->state) {
 				state_change = ast_tvnow();
 				last_state = t30state->state;
 			}
-		} else if (inf->frametype == AST_FRAME_CONTROL && inf->subclass == AST_CONTROL_T38_PARAMETERS) {
+		} else if (inf->frametype == AST_FRAME_CONTROL && inf->subclass.integer == AST_CONTROL_T38_PARAMETERS) {
 			struct ast_control_t38_parameters *parameters = inf->data.ptr;
 			if (parameters->request_response == AST_T38_TERMINATED) {
 				ast_debug(1, "T38 down, finishing\n");
@@ -733,7 +733,7 @@
 					return -1;
 				}
 				if ((inf->frametype == AST_FRAME_CONTROL) &&
-				    (inf->subclass == AST_CONTROL_T38_PARAMETERS) &&
+				    (inf->subclass.integer == AST_CONTROL_T38_PARAMETERS) &&
 				    (inf->datalen == sizeof(t38_parameters))) {
 					struct ast_control_t38_parameters *parameters = inf->data.ptr;
 					

Modified: team/may/chan_ooh323_rework/apps/app_festival.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_festival.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_festival.c (original)
+++ team/may/chan_ooh323_rework/apps/app_festival.c Wed Nov  4 13:41:00 2009
@@ -211,8 +211,8 @@
 			}
 			if (f->frametype == AST_FRAME_DTMF) {
 				ast_debug(1, "User pressed a key\n");
-				if (intkeys && strchr(intkeys, f->subclass)) {
-					res = f->subclass;
+				if (intkeys && strchr(intkeys, f->subclass.integer)) {
+					res = f->subclass.integer;
 					ast_frfree(f);
 					break;
 				}
@@ -228,7 +228,7 @@
 				res = read(fds[0], myf.frdata, needed);
 				if (res > 0) {
 					myf.f.frametype = AST_FRAME_VOICE;
-					myf.f.subclass = AST_FORMAT_SLINEAR;
+					myf.f.subclass.codec = AST_FORMAT_SLINEAR;
 					myf.f.datalen = res;
 					myf.f.samples = res / 2;
 					myf.f.offset = AST_FRIENDLY_OFFSET;

Modified: team/may/chan_ooh323_rework/apps/app_followme.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_followme.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_followme.c (original)
+++ team/may/chan_ooh323_rework/apps/app_followme.c Wed Nov  4 13:41:00 2009
@@ -643,7 +643,7 @@
 			f = ast_read(winner);
 			if (f) {
 				if (f->frametype == AST_FRAME_CONTROL) {
-					switch(f->subclass) {
+					switch (f->subclass.integer) {
 					case AST_CONTROL_HANGUP:
 						ast_verb(3, "%s received a hangup frame.\n", winner->name);
 						if (f->data.uint32) {
@@ -718,7 +718,7 @@
 						ast_verb(3, "%s stopped sounds\n", winner->name);
 						break;
 					default:
-						ast_debug(1, "Dunno what to do with control type %d\n", f->subclass);
+						ast_debug(1, "Dunno what to do with control type %d\n", f->subclass.integer);
 						break;
 					}
 				} 
@@ -726,8 +726,8 @@
 					if (winner->stream)
 						ast_stopstream(winner);
 					tmpuser->digts = 0;
-					ast_debug(1, "DTMF received: %c\n",(char) f->subclass);
-					tmpuser->yn[tmpuser->ynidx] = (char) f->subclass;
+					ast_debug(1, "DTMF received: %c\n", (char) f->subclass.integer);
+					tmpuser->yn[tmpuser->ynidx] = (char) f->subclass.integer;
 					tmpuser->ynidx++;
 					ast_debug(1, "DTMF string: %s\n", tmpuser->yn);
 					if (tmpuser->ynidx >= ynlongest) {

Modified: team/may/chan_ooh323_rework/apps/app_forkcdr.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_forkcdr.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_forkcdr.c (original)
+++ team/may/chan_ooh323_rework/apps/app_forkcdr.c Wed Nov  4 13:41:00 2009
@@ -184,7 +184,7 @@
 	while (cdr->next)
 		cdr = cdr->next;
 	
-	if (!(newcdr = ast_cdr_dup(cdr)))
+	if (!(newcdr = ast_cdr_dup_unique(cdr)))
 		return;
 	
 	ast_cdr_append(cdr, newcdr);

Modified: team/may/chan_ooh323_rework/apps/app_jack.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_jack.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_jack.c (original)
+++ team/may/chan_ooh323_rework/apps/app_jack.c Wed Nov  4 13:41:00 2009
@@ -604,7 +604,7 @@
 	short buf[160];
 	struct ast_frame f = {
 		.frametype = AST_FRAME_VOICE,
-		.subclass = AST_FORMAT_SLINEAR,
+		.subclass.codec = AST_FORMAT_SLINEAR,
 		.src = "JACK",
 		.data.ptr = buf,
 		.datalen = sizeof(buf),
@@ -781,7 +781,7 @@
 
 		switch (f->frametype) {
 		case AST_FRAME_CONTROL:
-			if (f->subclass == AST_CONTROL_HANGUP)
+			if (f->subclass.integer == AST_CONTROL_HANGUP)
 				jack_data->stop = 1;
 			break;
 		case AST_FRAME_VOICE:
@@ -827,9 +827,9 @@
 	if (frame->frametype != AST_FRAME_VOICE)
 		return 0;
 
-	if (frame->subclass != AST_FORMAT_SLINEAR) {
-		ast_log(LOG_WARNING, "Expected frame in SLINEAR for the audiohook, but got format %d\n",
-			frame->subclass);
+	if (frame->subclass.codec != AST_FORMAT_SLINEAR) {
+		ast_log(LOG_WARNING, "Expected frame in SLINEAR for the audiohook, but got format %s\n",
+			ast_getformatname(frame->subclass.codec));
 		return 0;
 	}
 

Modified: team/may/chan_ooh323_rework/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/may/chan_ooh323_rework/apps/app_meetme.c?view=diff&rev=227755&r1=227754&r2=227755
==============================================================================
--- team/may/chan_ooh323_rework/apps/app_meetme.c (original)
+++ team/may/chan_ooh323_rework/apps/app_meetme.c Wed Nov  4 13:41:00 2009
@@ -2931,11 +2931,11 @@
 					break;
 				}
 				if (f->frametype == AST_FRAME_DTMF) {
-					dtmfstr[0] = f->subclass;
+					dtmfstr[0] = f->subclass.integer;
 					dtmfstr[1] = '\0';
 				}
 
-				if ((f->frametype == AST_FRAME_VOICE) && (f->subclass == AST_FORMAT_SLINEAR)) {
+				if ((f->frametype == AST_FRAME_VOICE) && (f->subclass.codec == AST_FORMAT_SLINEAR)) {
 					if (user->talk.actual) {
 						ast_frame_adjust_volume(f, user->talk.actual);
 					}
@@ -2987,7 +2987,7 @@
 							careful_write(fd, f->data.ptr, f->datalen, 0);
 						}
 					}
-				} else if (((f->frametype == AST_FRAME_DTMF) && (f->subclass == '*') && (confflags & CONFFLAG_STARMENU)) || ((f->frametype == AST_FRAME_DTMF) && menu_active)) {
+				} else if (((f->frametype == AST_FRAME_DTMF) && (f->subclass.integer == '*') && (confflags & CONFFLAG_STARMENU)) || ((f->frametype == AST_FRAME_DTMF) && menu_active)) {
 					if (confflags & CONFFLAG_PASS_DTMF) {
 						conf_queue_dtmf(conf, user, f);
 					}
@@ -3020,7 +3020,7 @@
 								dtmf = 0;
 							}
 						} else {
-							dtmf = f->subclass;
+							dtmf = f->subclass.integer;
 						}
 						if (dtmf) {
 							switch(dtmf) {
@@ -3121,7 +3121,7 @@
 								dtmf = 0;
 							}
 						} else {
-							dtmf = f->subclass;
+							dtmf = f->subclass.integer;
 						}
 						if (dtmf) {
 							switch (dtmf) {
@@ -3211,7 +3211,7 @@
 					} else {
 						ast_debug(2, "Exit by single digit did not work in meetme. Extension %s does not exist in context %s\n", dtmfstr, exitcontext);
 					}
-				} else if ((f->frametype == AST_FRAME_DTMF) && (confflags & CONFFLAG_KEYEXIT) && (strchr(exitkeys, f->subclass))) {
+				} else if ((f->frametype == AST_FRAME_DTMF) && (confflags & CONFFLAG_KEYEXIT) && (strchr(exitkeys, f->subclass.integer))) {
 					pbx_builtin_setvar_helper(chan, "MEETME_EXIT_KEY", dtmfstr);
 						
 					if (confflags & CONFFLAG_PASS_DTMF) {
@@ -3224,7 +3224,7 @@
 					&& confflags & CONFFLAG_PASS_DTMF) {
 					conf_queue_dtmf(conf, user, f);

[... 17896 lines stripped ...]



More information about the svn-commits mailing list