[asterisk-commits] oej: branch oej/astum r41330 - in /team/oej/astum: ./ agi/ apps/ build_tools/...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Aug 30 01:20:03 MST 2006


Author: oej
Date: Wed Aug 30 03:20:02 2006
New Revision: 41330

URL: http://svn.digium.com/view/asterisk?rev=41330&view=rev
Log:
Reset automerge, no conflicts

Added:
    team/oej/astum/pbx/ael/ael-test/ael-test14/
      - copied from r41318, trunk/pbx/ael/ael-test/ael-test14/
    team/oej/astum/pbx/ael/ael-test/ael-test14/extensions.ael
      - copied unchanged from r41318, trunk/pbx/ael/ael-test/ael-test14/extensions.ael
    team/oej/astum/pbx/ael/ael-test/ref.ael-test14
      - copied unchanged from r41318, trunk/pbx/ael/ael-test/ref.ael-test14
Modified:
    team/oej/astum/   (props changed)
    team/oej/astum/Makefile
    team/oej/astum/Makefile.moddir_rules
    team/oej/astum/UPGRADE.txt
    team/oej/astum/agi/Makefile
    team/oej/astum/apps/Makefile
    team/oej/astum/apps/app_macro.c
    team/oej/astum/apps/app_milliwatt.c
    team/oej/astum/apps/app_mixmonitor.c
    team/oej/astum/apps/app_sms.c
    team/oej/astum/apps/app_speech_utils.c
    team/oej/astum/bootstrap.sh
    team/oej/astum/build_tools/make_buildopts_h
    team/oej/astum/build_tools/mkpkgconfig
    team/oej/astum/cdr/Makefile
    team/oej/astum/channels/Makefile
    team/oej/astum/channels/chan_iax2.c
    team/oej/astum/channels/chan_jingle.c
    team/oej/astum/channels/chan_local.c
    team/oej/astum/channels/chan_mgcp.c
    team/oej/astum/channels/chan_sip.c
    team/oej/astum/channels/chan_skinny.c
    team/oej/astum/channels/chan_zap.c
    team/oej/astum/channels/iax2-parser.c
    team/oej/astum/channels/iax2-parser.h
    team/oej/astum/codecs/Makefile
    team/oej/astum/codecs/codec_zap.c
    team/oej/astum/codecs/gsm/Makefile
    team/oej/astum/configs/features.conf.sample
    team/oej/astum/configs/modules.conf.sample
    team/oej/astum/configs/zapata.conf.sample
    team/oej/astum/configure
    team/oej/astum/configure.ac
    team/oej/astum/doc/queues-with-callback-members.txt
    team/oej/astum/doc/speechrec.txt
    team/oej/astum/formats/Makefile
    team/oej/astum/funcs/Makefile
    team/oej/astum/include/asterisk/autoconfig.h.in
    team/oej/astum/include/asterisk/channel.h
    team/oej/astum/include/asterisk/chanspy.h
    team/oej/astum/include/asterisk/features.h
    team/oej/astum/include/asterisk/frame.h
    team/oej/astum/include/asterisk/linkedlists.h
    team/oej/astum/include/asterisk/paths.h
    team/oej/astum/include/asterisk/rtp.h
    team/oej/astum/include/asterisk/slinfactory.h
    team/oej/astum/main/Makefile
    team/oej/astum/main/abstract_jb.c
    team/oej/astum/main/asterisk.c
    team/oej/astum/main/channel.c
    team/oej/astum/main/file.c
    team/oej/astum/main/frame.c
    team/oej/astum/main/loader.c
    team/oej/astum/main/pbx.c
    team/oej/astum/main/rtp.c
    team/oej/astum/main/slinfactory.c
    team/oej/astum/main/udptl.c
    team/oej/astum/main/utils.c
    team/oej/astum/makeopts.in
    team/oej/astum/pbx/Makefile
    team/oej/astum/pbx/pbx_ael.c
    team/oej/astum/pbx/pbx_config.c
    team/oej/astum/res/Makefile
    team/oej/astum/res/res_features.c
    team/oej/astum/res/res_musiconhold.c
    team/oej/astum/sounds/Makefile
    team/oej/astum/utils/   (props changed)
    team/oej/astum/utils/Makefile
    team/oej/astum/utils/ael_main.c
    team/oej/astum/utils/smsq.c

Propchange: team/oej/astum/
------------------------------------------------------------------------------
    automerge = http://edvina.net/training/

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

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

Propchange: team/oej/astum/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Aug 30 03:20:02 2006
@@ -21,5 +21,4 @@
 config.log
 menuselect-tree
 autom4te.cache
-muted
 makeopts.embed_rules

Propchange: team/oej/astum/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Aug 30 03:20:02 2006
@@ -1,1 +1,1 @@
-/trunk:1-40917
+/trunk:1-41329

Modified: team/oej/astum/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/astum/Makefile?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/Makefile (original)
+++ team/oej/astum/Makefile Wed Aug 30 03:20:02 2006
@@ -163,7 +163,8 @@
 endif
 
 ifeq ($(OSARCH),FreeBSD)
-  BSDVERSION=$(shell $(MAKE) -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
+  # -V is understood by BSD Make, not by GNU make.
+  BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
   ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
   AST_LIBS+=$(shell if test  $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
 endif
@@ -331,7 +332,7 @@
 	rm -f build_tools/menuselect-deps
 
 datafiles: all
-	if [ x`$(ID) -un` = xroot ]; then sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
+	if [ x`$(ID) -un` = xroot ]; then CFLAGS="$(ASTCFLAGS)" sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
 # Should static HTTP be installed during make samples or even with its own target ala
 # webvoicemail?  There are portions here that *could* be customized but might also be
 # improved a lot.  I'll put it here for now.
@@ -646,7 +647,7 @@
 	- at menuselect/menuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!"
 
 menuselect/menuselect: makeopts menuselect/menuselect.c menuselect/menuselect_curses.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts
-	@CFLAGS="-include $(ASTTOPDIR)/include/asterisk/autoconfig.h -I$(ASTTOPDIR)/include" PARENTSRC="$(ASTTOPDIR)" $(MAKE) -C menuselect CC="$(HOST_CC)"
+	@unset CC LD AR RANLIB && $(MAKE) -C menuselect CONFIGURE_SILENT="--silent"
 
 menuselect-tree: $(foreach dir,$(filter-out main,$(MOD_SUBDIRS)),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml sounds/sounds.xml build_tools/embed_modules.xml
 	@echo "Generating input for menuselect ..."

Modified: team/oej/astum/Makefile.moddir_rules
URL: http://svn.digium.com/view/asterisk/team/oej/astum/Makefile.moddir_rules?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/Makefile.moddir_rules (original)
+++ team/oej/astum/Makefile.moddir_rules Wed Aug 30 03:20:02 2006
@@ -13,6 +13,10 @@
 
 ifneq ($(findstring MALLOC_DEBUG,$(MENUSELECT_CFLAGS)),)
   CFLAGS+=-include $(ASTTOPDIR)/include/asterisk/astmm.h
+endif
+
+ifeq ($(findstring LOADABLE_MODULES,$(MENUSELECT_CFLAGS)),)
+  CFLAGS+=${GC_CFLAGS}
 endif
 
 ifneq ($(findstring STATIC_BUILD,$(MENUSELECT_CFLAGS)),)
@@ -91,9 +95,7 @@
 
 uninstall::
 
-ifneq ($(wildcard .depend),)
- include .depend
-endif
+-include .depend
 
 depend: .depend
 

Modified: team/oej/astum/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/oej/astum/UPGRADE.txt?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/UPGRADE.txt (original)
+++ team/oej/astum/UPGRADE.txt Wed Aug 30 03:20:02 2006
@@ -298,6 +298,10 @@
   option in sip.conf is removed to osp.conf as authpolicy. allowguest option
   in sip.conf cannot be set as osp anymore. 
 
+* The $SIPUSERAGENT dialplan variable is deprecated and will be removed
+  in coming versions of Asterisk. Please use the dialplan function
+  SIPCHANINFO(useragent) instead.
+
 The Zap channel:
 
 * Support for MFC/R2 has been removed, as it has not been functional for some

Modified: team/oej/astum/agi/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/astum/agi/Makefile?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/agi/Makefile (original)
+++ team/oej/astum/agi/Makefile Wed Aug 30 03:20:02 2006
@@ -40,9 +40,7 @@
 clean: clean-depend
 	rm -f *.so *.o look eagi-test eagi-sphinx-test
 
-ifneq ($(wildcard .depend),)
-include .depend
-endif
+-include .depend
 
 depend: .depend
 

Modified: team/oej/astum/apps/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/Makefile?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/apps/Makefile (original)
+++ team/oej/astum/apps/Makefile Wed Aug 30 03:20:02 2006
@@ -9,10 +9,7 @@
 # the GNU General Public License
 #
 
-ifneq ($(wildcard $(ASTTOPDIR)/menuselect.makeopts),)
-  include ../menuselect.makeopts
-  include ../menuselect.makedeps
-endif
+-include ../menuselect.makeopts ../menuselect.makedeps
 
 C_MODS:=$(filter-out $(MENUSELECT_APPS),$(patsubst %.c,%,$(wildcard app_*.c)))
 CC_MODS:=$(filter-out $(MENUSELECT_APPS),$(patsubst %.cc,%,$(wildcard app_*.cc)))

Modified: team/oej/astum/apps/app_macro.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/app_macro.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/apps/app_macro.c (original)
+++ team/oej/astum/apps/app_macro.c Wed Aug 30 03:20:02 2006
@@ -257,7 +257,7 @@
 			break;
 		}
 		/* don't stop executing extensions when we're in "h" */
-		if (chan->_softhangup && strcasecmp(chan->macroexten,"h")) {
+		if (chan->_softhangup && strcasecmp(oldexten,"h") && strcasecmp(chan->macroexten,"h")) {
 			ast_log(LOG_DEBUG, "Extension %s, macroexten %s, priority %d returned normally even though call was hung up\n",
 				chan->exten, chan->macroexten, chan->priority);
 			goto out;

Modified: team/oej/astum/apps/app_milliwatt.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/app_milliwatt.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/apps/app_milliwatt.c (original)
+++ team/oej/astum/apps/app_milliwatt.c Wed Aug 30 03:20:02 2006
@@ -66,10 +66,16 @@
 
 static int milliwatt_generate(struct ast_channel *chan, void *data, int len, int samples)
 {
-	struct ast_frame wf;
 	unsigned char buf[AST_FRIENDLY_OFFSET + 640];
 	const int maxsamples = sizeof (buf) / sizeof (buf[0]);
 	int i, *indexp = (int *) data;
+	struct ast_frame wf = {
+		.frametype = AST_FRAME_VOICE,
+		.subclass = AST_FORMAT_ULAW,
+		.offset = AST_FRIENDLY_OFFSET,
+		.data = buf + AST_FRIENDLY_OFFSET,
+		.src = __FUNCTION__,
+	};
 
 	/* Instead of len, use samples, because channel.c generator_force
 	* generate(chan, tmp, 0, 160) ignores len. In any case, len is
@@ -82,17 +88,8 @@
 		samples = maxsamples;
 	}
 	len = samples * sizeof (buf[0]);
-	wf.frametype = AST_FRAME_VOICE;
-	wf.subclass = AST_FORMAT_ULAW;
-	wf.offset = AST_FRIENDLY_OFFSET;
-	wf.mallocd = 0;
-	wf.data = buf + AST_FRIENDLY_OFFSET;
 	wf.datalen = len;
 	wf.samples = samples;
-	wf.src = "app_milliwatt";
-	wf.delivery.tv_sec = 0;
-	wf.delivery.tv_usec = 0;
-	wf.prev = wf.next = NULL;
 	/* create a buffer containing the digital milliwatt pattern */
 	for(i = 0; i < len; i++)
 	{

Modified: team/oej/astum/apps/app_mixmonitor.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/app_mixmonitor.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/apps/app_mixmonitor.c (original)
+++ team/oej/astum/apps/app_mixmonitor.c Wed Aug 30 03:20:02 2006
@@ -191,7 +191,7 @@
 			   of frames if a queue flush was necessary, so process them
 			*/
 			for (; f; f = next) {
-				next = f->next;
+				next = AST_LIST_NEXT(f, frame_list);
 				if (write)
 					ast_writestream(mixmonitor->fs, f);
 				ast_frfree(f);

Modified: team/oej/astum/apps/app_sms.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/app_sms.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/apps/app_sms.c (original)
+++ team/oej/astum/apps/app_sms.c Wed Aug 30 03:20:02 2006
@@ -691,6 +691,7 @@
 		while (fgets (line, sizeof (line), s))
 		{								 /* process line in file */
 			char *p;
+			void *pp = &p;
 			for (p = line; *p && *p != '\n' && *p != '\r'; p++);
 			*p = 0;					 /* strip eoln */
 			p = line;
@@ -710,7 +711,7 @@
 				{						 /* parse message (UTF-8) */
 					unsigned char o = 0;
 					while (*p && o < SMSLEN)
-						h->ud[o++] = utf8decode((unsigned char **) &p);
+						h->ud[o++] = utf8decode(pp);
 					h->udl = o;
 					if (*p)
 						ast_log (LOG_WARNING, "UD too long in %s\n", fn);

Modified: team/oej/astum/apps/app_speech_utils.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/app_speech_utils.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/apps/app_speech_utils.c (original)
+++ team/oej/astum/apps/app_speech_utils.c Wed Aug 30 03:20:02 2006
@@ -64,8 +64,7 @@
 "Once they stop talking the processing sound is played to indicate the speech recognition engine is working.\n"
 "Once results are available the application returns and results (score and text) are available using dialplan functions.\n"
 "The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)} and ${SPEECH_SCORE(1)}.\n"
-"This may change in the future, however, to use a dialplan function instead of dialplan variables. Note it is possible to have more then one result.\n"
-	"The first argument is the sound file and the second is the timeout. Note the timeout will only start once the sound file has stopped playing.\n";
+"The first argument is the sound file and the second is the timeout. Note the timeout will only start once the sound file has stopped playing.\n";
 
 static char *speechdeactivategrammar_descrip =
 "SpeechDeactivateGrammar(Grammar Name)\n"

Modified: team/oej/astum/bootstrap.sh
URL: http://svn.digium.com/view/asterisk/team/oej/astum/bootstrap.sh?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/bootstrap.sh (original)
+++ team/oej/astum/bootstrap.sh Wed Aug 30 03:20:02 2006
@@ -12,17 +12,17 @@
 uname -s | grep -q FreeBSD
 if [ $? = 0 ]
 then
-	check_for_app autoconf259
-	check_for_app autoheader259
+	check_for_app autoconf260
+	check_for_app autoheader260
 	check_for_app automake19
 	check_for_app aclocal19
 	echo "Generating the configure script ..."
 	aclocal19 2>/dev/null
-	autoconf259
-	autoheader259
+	autoconf260
+	autoheader260
 	automake19 --add-missing --copy 2>/dev/null
 else
-	AUTOCONF_VERSION=2.59
+	AUTOCONF_VERSION=2.60
 	AUTOMAKE_VERSION=1.9
 	export AUTOCONF_VERSION
 	export AUTOMAKE_VERSION

Modified: team/oej/astum/build_tools/make_buildopts_h
URL: http://svn.digium.com/view/asterisk/team/oej/astum/build_tools/make_buildopts_h?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/build_tools/make_buildopts_h (original)
+++ team/oej/astum/build_tools/make_buildopts_h Wed Aug 30 03:20:02 2006
@@ -7,7 +7,7 @@
  */
 
 END
-TMP=`grep MENUSELECT_CFLAGS menuselect.makeopts | sed s/MENUSELECT_CFLAGS\=//g | sed s/-D//g`
+TMP=`grep MENUSELECT_CFLAGS menuselect.makeopts | sed 's/MENUSELECT_CFLAGS\=//g' | sed 's/-D//g'`
 for x in ${TMP}; do
      echo "#define ${x} 1"
 done

Modified: team/oej/astum/build_tools/mkpkgconfig
URL: http://svn.digium.com/view/asterisk/team/oej/astum/build_tools/mkpkgconfig?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/build_tools/mkpkgconfig (original)
+++ team/oej/astum/build_tools/mkpkgconfig Wed Aug 30 03:20:02 2006
@@ -13,13 +13,20 @@
   exit
 fi
 
+#Solaris (and some others) don't have sed -r.  perl -p is equivalent
+if [[ `echo "xxx" | sed -r 's/x/y/g' 2>/dev/null | grep -c "yyy"` != 0 ]]; then
+    EXTREGEX="sed -r -e"
+else
+    EXTREGEX="perl -pe"
+fi
+
 ## Clean out CFLAGS for the spec file.
 
-LOCAL_CFLAGS=`echo $CFLAGS | sed -e 's/\s*-pipe\s*//g' | sed -e 's/-[Wmp]\S*\s*//g' | \
-  sed -r -e 's/-I(include|\.\.\/include) //g' | \
-  sed -e 's/-DINSTALL_PREFIX=\S* //g' | \
-  sed -r -e 's/-DASTERISK_VERSION=\S* //g' | \
-  sed -r -e 's/-DAST(ETCDIR|LIBDIR|VARLIBDIR|VARRUNDIR|SPOOLDIR|LOGDIR|CONFPATH|MODDIR|AGIDIR)=\S* //g'`
+LOCAL_CFLAGS=`echo $CFLAGS | ${EXTREGEX} 's/\s*-pipe\s*//g' | ${EXTREGEX} 's/-[Wmp]\S*\s*//g' | \
+  ${EXTREGEX} 's/-I(include|\.\.\/include) //g' | \
+  ${EXTREGEX} 's/-DINSTALL_PREFIX=\S* //g' | \
+  ${EXTREGEX} 's/-DASTERISK_VERSION=\S* //g' | \
+  ${EXTREGEX} 's/-DAST(ETCDIR|LIBDIR|VARLIBDIR|VARRUNDIR|SPOOLDIR|LOGDIR|CONFPATH|MODDIR|AGIDIR)=\S* //g'`
 
 
 cat <<EOF > $PPATH/asterisk.pc

Modified: team/oej/astum/cdr/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/astum/cdr/Makefile?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/cdr/Makefile (original)
+++ team/oej/astum/cdr/Makefile Wed Aug 30 03:20:02 2006
@@ -9,10 +9,7 @@
 # the GNU General Public License
 #
 
-ifneq ($(wildcard $(ASTTOPDIR)/menuselect.makeopts),)
-  include ../menuselect.makeopts
-  include ../menuselect.makedeps
-endif
+-include ../menuselect.makeopts ../menuselect.makedeps
 
 C_MODS:=$(filter-out $(MENUSELECT_CDR),$(patsubst %.c,%,$(wildcard cdr_*.c)))
 CC_MODS:=$(filter-out $(MENUSELECT_CDR),$(patsubst %.cc,%,$(wildcard cdr_*.cc)))

Modified: team/oej/astum/channels/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/astum/channels/Makefile?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/channels/Makefile (original)
+++ team/oej/astum/channels/Makefile Wed Aug 30 03:20:02 2006
@@ -9,10 +9,7 @@
 # the GNU General Public License
 #
 
-ifneq ($(wildcard $(ASTTOPDIR)/menuselect.makeopts),)
-  include ../menuselect.makeopts
-  include ../menuselect.makedeps
-endif
+-include ../menuselect.makeopts ../menuselect.makedeps
 
 C_MODS:=$(filter-out $(MENUSELECT_CHANNELS),$(patsubst %.c,%,$(wildcard chan_*.c)))
 CC_MODS:=$(filter-out $(MENUSELECT_CHANNELS),$(patsubst %.cc,%,$(wildcard chan_*.cc)))
@@ -66,9 +63,7 @@
 	rm -f busy.h ringtone.h gentone
 	$(MAKE) -C misdn clean
 
-ifneq ($(wildcard $(PWD)/Makefile.ast),)
-  include $(PWD)/Makefile.ast
-endif
+-include $(PWD)/Makefile.ast
 
 $(eval $(call ast_make_final_host,gentone,gentone.c))
 gentone: LIBS+=-lm

Modified: team/oej/astum/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/channels/chan_iax2.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/channels/chan_iax2.c (original)
+++ team/oej/astum/channels/chan_iax2.c Wed Aug 30 03:20:02 2006
@@ -621,11 +621,11 @@
 };
 
 static struct ast_iax2_queue {
-	struct iax_frame *head;
-	struct iax_frame *tail;
+	AST_LIST_HEAD(, iax_frame) queue;
 	int count;
-	ast_mutex_t lock;
-} iaxq;
+} iaxq = {
+	.queue = AST_LIST_HEAD_INIT_VALUE
+};
 
 static AST_LIST_HEAD_STATIC(users, iax2_user);
 
@@ -1071,11 +1071,12 @@
 
 static struct iax_frame *iaxfrdup2(struct iax_frame *fr)
 {
-	/* Malloc() a copy of a frame */
 	struct iax_frame *new = iax_frame_new(DIRECTION_INGRESS, fr->af.datalen);
 	if (new) {
-		memcpy(new, fr, sizeof(struct iax_frame));	
+		size_t mallocd_datalen = new->mallocd_datalen;
+		memcpy(new, fr, sizeof(*new));
 		iax_frame_wrap(new, &fr->af);
+		new->mallocd_datalen = mallocd_datalen;
 		new->data = NULL;
 		new->datalen = 0;
 		new->direction = DIRECTION_INGRESS;
@@ -1754,7 +1755,7 @@
 			ast_queue_hangup(owner);
 		}
 
-		for (cur = iaxq.head; cur ; cur = cur->next) {
+		AST_LIST_TRAVERSE(&iaxq.queue, cur, list) {
 			/* Cancel any pending transmissions */
 			if (cur->callno == pvt->callno) 
 				cur->retries = -1;
@@ -1875,17 +1876,10 @@
 	/* Do not try again */
 	if (freeme) {
 		/* Don't attempt delivery, just remove it from the queue */
-		ast_mutex_lock(&iaxq.lock);
-		if (f->prev) 
-			f->prev->next = f->next;
-		else
-			iaxq.head = f->next;
-		if (f->next)
-			f->next->prev = f->prev;
-		else
-			iaxq.tail = f->prev;
+		AST_LIST_LOCK(&iaxq.queue);
+		AST_LIST_REMOVE(&iaxq.queue, f, list);
 		iaxq.count--;
-		ast_mutex_unlock(&iaxq.lock);
+		AST_LIST_UNLOCK(&iaxq.queue);
 		f->retrans = -1;
 		/* Free the IAX frame */
 		iax2_frame_free(f);
@@ -2082,7 +2076,7 @@
 	int cnt = 0, dead=0, final=0;
 	if (argc != 3)
 		return RESULT_SHOWUSAGE;
-	for (cur = iaxq.head; cur ; cur = cur->next) {
+	AST_LIST_TRAVERSE(&iaxq.queue, cur, list) {
 		if (cur->retries < 0)
 			dead++;
 		if (cur->final)
@@ -2092,7 +2086,8 @@
 	ast_cli(fd, "    IAX Statistics\n");
 	ast_cli(fd, "---------------------\n");
 	ast_cli(fd, "Outstanding frames: %d (%d ingress, %d egress)\n", iax_get_frames(), iax_get_iframes(), iax_get_oframes());
-	ast_cli(fd, "Packets in transmit queue: %d dead, %d final, %d total\n", dead, final, cnt);
+	ast_cli(fd, "Packets in transmit queue: %d dead, %d final, %d total\n\n", dead, final, cnt);
+	
 	return RESULT_SUCCESS;
 }
 
@@ -2369,24 +2364,13 @@
 static int iax2_transmit(struct iax_frame *fr)
 {
 	/* Lock the queue and place this packet at the end */
-	fr->next = NULL;
-	fr->prev = NULL;
 	/* By setting this to 0, the network thread will send it for us, and
 	   queue retransmission if necessary */
 	fr->sentyet = 0;
-	ast_mutex_lock(&iaxq.lock);
-	if (!iaxq.head) {
-		/* Empty queue */
-		iaxq.head = fr;
-		iaxq.tail = fr;
-	} else {
-		/* Double link */
-		iaxq.tail->next = fr;
-		fr->prev = iaxq.tail;
-		iaxq.tail = fr;
-	}
+	AST_LIST_LOCK(&iaxq.queue);
+	AST_LIST_INSERT_TAIL(&iaxq.queue, fr, list);
 	iaxq.count++;
-	ast_mutex_unlock(&iaxq.lock);
+	AST_LIST_UNLOCK(&iaxq.queue);
 	/* Wake up the network and scheduler thread */
 	pthread_kill(netthreadid, SIGURG);
 	signal_condition(&sched_lock, &sched_cond);
@@ -4743,19 +4727,21 @@
 		/* Keep this check last */
 		if (!ast_strlen_zero(user->dbsecret)) {
 			char *family, *key=NULL;
+			char buf[80];
 			family = ast_strdupa(user->dbsecret);
 			key = strchr(family, '/');
 			if (key) {
 				*key = '\0';
 				key++;
 			}
-			if (!key || ast_db_get(family, key, (char*)iaxs[callno]->secret, sizeof(iaxs[callno]->secret))) {
+			if (!key || ast_db_get(family, key, buf, sizeof(buf))) {
 				ast_log(LOG_WARNING, "Unable to retrieve database password for family/key '%s'!\n", user->dbsecret);
 				if (ast_test_flag(user, IAX_TEMPONLY)) {
 					destroy_user(user);
 					user = NULL;
 				}
-			}
+			} else
+				ast_string_field_set(iaxs[callno], secret, buf);
 		} else
 			ast_string_field_set(iaxs[callno], secret, user->secret);
 		res = 0;
@@ -4801,6 +4787,7 @@
 	struct iax2_user *user = NULL;
 	struct iax_ie_data ied;
 	int res = -1, authreq_restrict = 0;
+	char challenge[10];
 
 	memset(&ied, 0, sizeof(ied));
 
@@ -4829,7 +4816,8 @@
 
 	iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, p->authmethods);
 	if (p->authmethods & (IAX_AUTH_MD5 | IAX_AUTH_RSA)) {
-		ast_string_field_build(p,challenge, "%d", (int)ast_random());
+		snprintf(challenge, sizeof(challenge), "%d", (int)ast_random());
+		ast_string_field_set(p, challenge, challenge);
 		/* snprintf(p->challenge, sizeof(p->challenge), "%d", (int)ast_random()); */
 		iax_ie_append_str(&ied, IAX_IE_CHALLENGE, p->challenge);
 	}
@@ -5328,15 +5316,15 @@
 	pvt->lastsent = 0;
 	pvt->nextpred = 0;
 	pvt->pingtime = DEFAULT_RETRY_TIME;
-	ast_mutex_lock(&iaxq.lock);
-	for (cur = iaxq.head; cur ; cur = cur->next) {
+	AST_LIST_LOCK(&iaxq.queue);
+	AST_LIST_TRAVERSE(&iaxq.queue, cur, list) {
 		/* We must cancel any packets that would have been transmitted
 		   because now we're talking to someone new.  It's okay, they
 		   were transmitted to someone that didn't care anyway. */
 		if (callno == cur->callno) 
 			cur->retries = -1;
 	}
-	ast_mutex_unlock(&iaxq.lock);
+	AST_LIST_UNLOCK(&iaxq.queue);
 	return 0; 
 }
 
@@ -5658,6 +5646,7 @@
 {
 	struct iax_ie_data ied;
 	struct iax2_peer *p;
+	char challenge[10];
 	/* SLD: third call to find_peer in registration */
 	p = find_peer(name, 1);
 	if (p) {
@@ -5665,7 +5654,8 @@
 		iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, p->authmethods);
 		if (p->authmethods & (IAX_AUTH_RSA | IAX_AUTH_MD5)) {
 			/* Build the challenge */
-			ast_string_field_build(iaxs[callno], challenge, "%d", (int)ast_random());
+			snprintf(challenge, sizeof(challenge), "%d", (int)ast_random());
+			ast_string_field_set(iaxs[callno], challenge, challenge);
 			/* snprintf(iaxs[callno]->challenge, sizeof(iaxs[callno]->challenge), "%d", (int)ast_random()); */
 			iax_ie_append_str(&ied, IAX_IE_CHALLENGE, iaxs[callno]->challenge);
 		}
@@ -5833,17 +5823,16 @@
 static void vnak_retransmit(int callno, int last)
 {
 	struct iax_frame *f;
-	ast_mutex_lock(&iaxq.lock);
-	f = iaxq.head;
-	while(f) {
+
+	AST_LIST_LOCK(&iaxq.queue);
+	AST_LIST_TRAVERSE(&iaxq.queue, f, list) {
 		/* Send a copy immediately */
 		if ((f->callno == callno) && iaxs[f->callno] &&
 			(f->oseqno >= last)) {
 			send_packet(f);
 		}
-		f = f->next;
-	}
-	ast_mutex_unlock(&iaxq.lock);
+	}
+	AST_LIST_UNLOCK(&iaxq.queue);
 }
 
 static void __iax2_poke_peer_s(void *data)
@@ -6568,8 +6557,8 @@
 					/* Ack the packet with the given timestamp */
 					if (option_debug && iaxdebug)
 						ast_log(LOG_DEBUG, "Cancelling transmission of packet %d\n", x);
-					ast_mutex_lock(&iaxq.lock);
-					for (cur = iaxq.head; cur ; cur = cur->next) {
+					AST_LIST_LOCK(&iaxq.queue);
+					AST_LIST_TRAVERSE(&iaxq.queue, cur, list) {
 						/* If it's our call, and our timestamp, mark -1 retries */
 						if ((fr->callno == cur->callno) && (x == cur->oseqno)) {
 							cur->retries = -1;
@@ -6581,7 +6570,7 @@
 							}
 						}
 					}
-					ast_mutex_unlock(&iaxq.lock);
+					AST_LIST_UNLOCK(&iaxq.queue);
 				}
 				/* Note how much we've received acknowledgement for */
 				if (iaxs[fr->callno])
@@ -6721,13 +6710,13 @@
 			case IAX_COMMAND_TXACC:
 				if (iaxs[fr->callno]->transferring == TRANSFER_BEGIN) {
 					/* Ack the packet with the given timestamp */
-					ast_mutex_lock(&iaxq.lock);
-					for (cur = iaxq.head; cur ; cur = cur->next) {
+					AST_LIST_LOCK(&iaxq.queue);
+					AST_LIST_TRAVERSE(&iaxq.queue, cur, list) {
 						/* Cancel any outstanding txcnt's */
 						if ((fr->callno == cur->callno) && (cur->transfer))
 							cur->retries = -1;
 					}
-					ast_mutex_unlock(&iaxq.lock);
+					AST_LIST_UNLOCK(&iaxq.queue);
 					memset(&ied1, 0, sizeof(ied1));
 					iax_ie_append_short(&ied1, IAX_IE_CALLNO, iaxs[fr->callno]->callno);
 					send_command(iaxs[fr->callno], AST_FRAME_IAX, IAX_COMMAND_TXREADY, 0, ied1.buf, ied1.pos, -1);
@@ -8029,49 +8018,42 @@
 	/* Our job is simple: Send queued messages, retrying if necessary.  Read frames 
 	   from the network, and queue them for delivery to the channels */
 	int res, count;
-	struct iax_frame *f, *freeme;
+	struct iax_frame *f;
+
 	if (timingfd > -1)
 		ast_io_add(io, timingfd, timing_read, AST_IO_IN | AST_IO_PRI, NULL);
+	
 	for(;;) {
 		/* Go through the queue, sending messages which have not yet been
 		   sent, and scheduling retransmissions if appropriate */
-		ast_mutex_lock(&iaxq.lock);
-		f = iaxq.head;
+		AST_LIST_LOCK(&iaxq.queue);
 		count = 0;
-		while(f) {
-			freeme = NULL;
-			if (!f->sentyet) {
-				f->sentyet++;
-				/* Send a copy immediately -- errors here are ok, so don't bother locking */
-				if (iaxs[f->callno]) {
-					send_packet(f);
-					count++;
-				} 
-				if (f->retries < 0) {
-					/* This is not supposed to be retransmitted */
-					if (f->prev) 
-						f->prev->next = f->next;
-					else
-						iaxq.head = f->next;
-					if (f->next)
-						f->next->prev = f->prev;
-					else
-						iaxq.tail = f->prev;
-					iaxq.count--;
-					/* Free the iax frame */
-					freeme = f;
-				} else {
-					/* We need reliable delivery.  Schedule a retransmission */
-					f->retries++;
-					f->retrans = ast_sched_add(sched, f->retrytime, attempt_transmit, f);
-					signal_condition(&sched_lock, &sched_cond);
-				}
+		AST_LIST_TRAVERSE_SAFE_BEGIN(&iaxq.queue, f, list) {
+			if (f->sentyet)
+				continue;
+			
+			f->sentyet++;
+			/* Send a copy immediately -- errors here are ok, so don't bother locking */
+			if (iaxs[f->callno]) {
+				send_packet(f);
+				count++;
+			} 
+			if (f->retries < 0) {
+				/* This is not supposed to be retransmitted */
+				AST_LIST_REMOVE(&iaxq.queue, f, list);
+				iaxq.count--;
+				/* Free the iax frame */
+				iax_frame_free(f);
+			} else {
+				/* We need reliable delivery.  Schedule a retransmission */
+				f->retries++;
+				f->retrans = ast_sched_add(sched, f->retrytime, attempt_transmit, f);
+				signal_condition(&sched_lock, &sched_cond);
 			}
-			f = f->next;
-			if (freeme)
-				iax_frame_free(freeme);
-		}
-		ast_mutex_unlock(&iaxq.lock);
+		}
+		AST_LIST_TRAVERSE_SAFE_END
+		AST_LIST_UNLOCK(&iaxq.queue);
+
 		if (count >= 20)
 			ast_log(LOG_DEBUG, "chan_iax2: Sent %d queued outbound frames all at once\n", count);
 
@@ -9749,7 +9731,6 @@
 
 static int unload_module(void)
 {
-	ast_mutex_destroy(&iaxq.lock);
 	ast_mutex_destroy(&waresl.lock);
 	ast_custom_function_unregister(&iaxpeer_function);
 	return __unload_module();
@@ -9801,7 +9782,6 @@
 	}
 	ast_netsock_init(netsock);
 
-	ast_mutex_init(&iaxq.lock);
 	ast_mutex_init(&waresl.lock);
 	
 	ast_cli_register_multiple(iax2_cli, sizeof(iax2_cli) / sizeof(iax2_cli[0]));

Modified: team/oej/astum/channels/chan_jingle.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/channels/chan_jingle.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/channels/chan_jingle.c (original)
+++ team/oej/astum/channels/chan_jingle.c Wed Aug 30 03:20:02 2006
@@ -185,7 +185,7 @@
 /*----- RTP interface functions */
 static int jingle_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp,
 							   struct ast_rtp *vrtp, int codecs, int nat_active);
-static struct ast_rtp *jingle_get_rtp_peer(struct ast_channel *chan);
+static enum ast_rtp_get_result jingle_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp);
 static int jingle_get_codec(struct ast_channel *chan);
 
 /*! \brief PBX interface structure for channel registration */
@@ -405,18 +405,22 @@
 	return res;
 }
 
-static struct ast_rtp *jingle_get_rtp_peer(struct ast_channel *chan)
+static enum ast_rtp_get_result jingle_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
 {
 	struct jingle_pvt *p = chan->tech_pvt;
-	struct ast_rtp *rtp = NULL;
+	enum ast_rtp_get_result res = AST_RTP_GET_FAILED;
 
 	if (!p)
-		return NULL;
+		return res;
+
 	ast_mutex_lock(&p->lock);
-	if (p->rtp)
-		rtp = p->rtp;
+	if (p->rtp) {
+		*rtp = p->rtp;
+		res = AST_RTP_TRY_NATIVE;
+	}
 	ast_mutex_unlock(&p->lock);
-	return rtp;
+
+	return res;
 }
 
 static int jingle_get_codec(struct ast_channel *chan)

Modified: team/oej/astum/channels/chan_local.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/channels/chan_local.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/channels/chan_local.c (original)
+++ team/oej/astum/channels/chan_local.c Wed Aug 30 03:20:02 2006
@@ -226,7 +226,7 @@
 	   frames on the owner channel (because they would be transferred to the
 	   outbound channel during the masquerade)
 	*/
-	if (isoutbound && p->chan->_bridge /* Not ast_bridged_channel!  Only go one step! */ && !p->owner->readq) {
+	if (isoutbound && p->chan->_bridge /* Not ast_bridged_channel!  Only go one step! */ && AST_LIST_EMPTY(&p->owner->readq)) {
 		/* Masquerade bridged channel into owner */
 		/* Lock everything we need, one by one, and give up if
 		   we can't get everything.  Remember, we'll get another
@@ -248,7 +248,7 @@
 	   when the local channels go away.
 	*/
 #if 0
-	} else if (!isoutbound && p->owner && p->owner->_bridge && p->chan && !p->chan->readq) {
+	} else if (!isoutbound && p->owner && p->owner->_bridge && p->chan && AST_LIST_EMPTY(&p->chan->readq)) {
 		/* Masquerade bridged channel into chan */
 		if (!ast_mutex_trylock(&(p->owner->_bridge)->lock)) {
 			if (!p->owner->_bridge->_softhangup) {

Modified: team/oej/astum/channels/chan_mgcp.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/channels/chan_mgcp.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/channels/chan_mgcp.c (original)
+++ team/oej/astum/channels/chan_mgcp.c Wed Aug 30 03:20:02 2006
@@ -3876,13 +3876,19 @@
 	return (gw_reload ? NULL : gw);
 }
 
-static struct ast_rtp *mgcp_get_rtp_peer(struct ast_channel *chan)
-{
-	struct mgcp_subchannel *sub;
-	sub = chan->tech_pvt;
-	if (sub && sub->rtp && sub->parent->canreinvite)
-		return sub->rtp;
-	return NULL;
+static enum ast_rtp_get_result mgcp_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
+{
+	struct mgcp_subchannel *sub = NULL;
+
+	if (!(sub = chan->tech_pvt) || !(sub->rtp))
+		return AST_RTP_GET_FAILED;
+
+	*rtp = sub->rtp;
+
+	if (sub->parent->canreinvite)
+		return AST_RTP_TRY_NATIVE;
+	else
+		return AST_RTP_TRY_PARTIAL;
 }
 
 static int mgcp_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struct ast_rtp *vrtp, int codecs, int nat_active)

Modified: team/oej/astum/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/channels/chan_sip.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/channels/chan_sip.c (original)
+++ team/oej/astum/channels/chan_sip.c Wed Aug 30 03:20:02 2006
@@ -1479,8 +1479,8 @@
 
 /*----- RTP interface functions */
 static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struct ast_rtp *vrtp, int codecs, int nat_active);
-static struct ast_rtp *sip_get_rtp_peer(struct ast_channel *chan);
-static struct ast_rtp *sip_get_vrtp_peer(struct ast_channel *chan);
+static enum ast_rtp_get_result sip_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp);
+static enum ast_rtp_get_result sip_get_vrtp_peer(struct ast_channel *chan, struct ast_rtp **rtp);
 static int sip_get_codec(struct ast_channel *chan);
 static struct ast_frame *sip_rtp_read(struct ast_channel *ast, struct sip_pvt *p, int *faxdetect);
 
@@ -14365,12 +14365,15 @@
 								ast_mutex_lock(&sip->lock);
 							}
 							if (sip->owner) {
-								ast_log(LOG_NOTICE,
-									"Disconnecting call '%s' for lack of RTP activity in %ld seconds\n",
-									sip->owner->name,
-									(long) (t - sip->lastrtprx));
-								/* Issue a softhangup */
-								ast_softhangup_nolock(sip->owner, AST_SOFTHANGUP_DEV);
+								if (!(ast_rtp_get_bridged(sip->rtp))) {
+									ast_log(LOG_NOTICE,
+										"Disconnecting call '%s' for lack of RTP activity in %ld seconds\n",
+										sip->owner->name,
+										(long) (t - sip->lastrtprx));
+									/* Issue a softhangup */
+									ast_softhangup_nolock(sip->owner, AST_SOFTHANGUP_DEV);
+								} else
+									ast_log(LOG_NOTICE, "'%s' will not be disconnected in %ld seconds because it is directly bridged to another RTP stream\n", sip->owner->name, (long) (t - sip->lastrtprx));
 								ast_channel_unlock(sip->owner);
 								/* forget the timeouts for this call, since a hangup
 								   has already been requested and we don't want to
@@ -16051,34 +16054,53 @@
 
 
 /*! \brief Returns null if we can't reinvite audio (part of RTP interface) */
-static struct ast_rtp *sip_get_rtp_peer(struct ast_channel *chan)
-{
-	struct sip_pvt *p;
-	struct ast_rtp *rtp = NULL;
-	p = chan->tech_pvt;
-	if (!p)
-		return NULL;
+static enum ast_rtp_get_result sip_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
+{
+	struct sip_pvt *p = NULL;
+	enum ast_rtp_get_result res = AST_RTP_TRY_PARTIAL;
+
+	if (!(p = chan->tech_pvt))
+		return AST_RTP_GET_FAILED;
+
 	ast_mutex_lock(&p->lock);
-	if (p->rtp && ast_test_flag(&p->flags[0], SIP_CAN_REINVITE))
-		rtp =  p->rtp;
+	if (!(p->rtp)) {
+		ast_mutex_unlock(&p->lock);
+		return AST_RTP_GET_FAILED;
+	}
+
+	*rtp = p->rtp;
+
+	if (ast_test_flag(&p->flags[0], SIP_CAN_REINVITE))
+		res = AST_RTP_TRY_NATIVE;
+
 	ast_mutex_unlock(&p->lock);
-	return rtp;
+
+	return res;
 }
 
 /*! \brief Returns null if we can't reinvite video (part of RTP interface) */
-static struct ast_rtp *sip_get_vrtp_peer(struct ast_channel *chan)
-{
-	struct sip_pvt *p;
-	struct ast_rtp *rtp = NULL;
-	p = chan->tech_pvt;
-	if (!p)
-		return NULL;
+static enum ast_rtp_get_result sip_get_vrtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
+{
+	struct sip_pvt *p = NULL;
+	enum ast_rtp_get_result res = AST_RTP_TRY_PARTIAL;
+	
+	if (!(p = chan->tech_pvt))
+		return AST_RTP_GET_FAILED;
 
 	ast_mutex_lock(&p->lock);
-	if (p->vrtp && ast_test_flag(&p->flags[0], SIP_CAN_REINVITE))
-		rtp = p->vrtp;
+	if (!(p->rtp)) {
+		ast_mutex_unlock(&p->lock);
+		return AST_RTP_GET_FAILED;
+	}
+
+	*rtp = p->vrtp;
+
+	if (ast_test_flag(&p->flags[0], SIP_CAN_REINVITE))
+		res = AST_RTP_TRY_NATIVE;
+
 	ast_mutex_unlock(&p->lock);
-	return rtp;
+
+	return res;
 }
 
 /*! \brief Set the RTP peer for this call */

Modified: team/oej/astum/channels/chan_skinny.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/channels/chan_skinny.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/channels/chan_skinny.c (original)
+++ team/oej/astum/channels/chan_skinny.c Wed Aug 30 03:20:02 2006
@@ -1591,24 +1591,28 @@
 /* I do not believe skinny can deal with video.
    Anyone know differently? */
 /* Yes, it can.  Currently 7985 and Cisco VT Advantage do video. */
-static struct ast_rtp *skinny_get_vrtp_peer(struct ast_channel *c)
-{
-	struct skinny_subchannel *sub;
-	sub = c->tech_pvt;
-	if (sub && sub->vrtp) {
-		return sub->vrtp;
-	}
-	return NULL;
-}
-
-static struct ast_rtp *skinny_get_rtp_peer(struct ast_channel *c)
-{
-	struct skinny_subchannel *sub;
-	sub = c->tech_pvt;
-	if (sub && sub->rtp) {
-		return sub->rtp;
-	}
-	return NULL;
+static enum ast_rtp_get_result skinny_get_vrtp_peer(struct ast_channel *c, struct ast_rtp **rtp)
+{
+	struct skinny_subchannel *sub = NULL;
+
+	if (!(sub = c->tech_pvt) || !(sub->vrtp))
+		return AST_RTP_GET_FAILED;
+
+	*rtp = sub->vrtp;
+
+	return AST_RTP_TRY_NATIVE;
+}
+
+static enum ast_rtp_get_result skinny_get_rtp_peer(struct ast_channel *c, struct ast_rtp **rtp)
+{
+	struct skinny_subchannel *sub = NULL;
+
+	if (!(sub = c->tech_pvt) || !(sub->rtp))
+		return AST_RTP_GET_FAILED;
+
+	*rtp = sub->rtp;
+
+	return AST_RTP_TRY_NATIVE;
 }
 
 static int skinny_set_rtp_peer(struct ast_channel *c, struct ast_rtp *rtp, struct ast_rtp *vrtp, int codecs, int nat_active)

Modified: team/oej/astum/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/channels/chan_zap.c?rev=41330&r1=41329&r2=41330&view=diff
==============================================================================
--- team/oej/astum/channels/chan_zap.c (original)
+++ team/oej/astum/channels/chan_zap.c Wed Aug 30 03:20:02 2006
@@ -3516,7 +3516,6 @@
 	pthread_t threadid;
 	pthread_attr_t attr;
 	struct ast_channel *chan;
-	struct ast_frame dtmf_frame = { .frametype = AST_FRAME_DTMF };
 
 	pthread_attr_init(&attr);
 	pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
@@ -3560,8 +3559,6 @@
 			*/
 			p->subs[index].f.frametype = AST_FRAME_DTMF_BEGIN;
 			p->subs[index].f.subclass = res & 0xff;
-			dtmf_frame.subclass = res & 0xff;
-			p->subs[index].f.next = ast_frdup(&dtmf_frame);

[... 4316 lines stripped ...]


More information about the asterisk-commits mailing list