[asterisk-commits] branch oej/codecnegotiation r34088 - in /team/oej/codecnegotiation: ./ apps/ ...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Jun 14 07:10:39 MST 2006


Author: oej
Date: Wed Jun 14 09:10:38 2006
New Revision: 34088

URL: http://svn.digium.com/view/asterisk?rev=34088&view=rev
Log:
resolve conflict in app_dial, reset automerge

Added:
    team/oej/codecnegotiation/abstract_jb.c
      - copied unchanged from r31953, trunk/abstract_jb.c
    team/oej/codecnegotiation/fixedjitterbuf.c
      - copied unchanged from r31953, trunk/fixedjitterbuf.c
    team/oej/codecnegotiation/fixedjitterbuf.h
      - copied unchanged from r31953, trunk/fixedjitterbuf.h
    team/oej/codecnegotiation/include/asterisk/abstract_jb.h
      - copied unchanged from r31953, trunk/include/asterisk/abstract_jb.h
Modified:
    team/oej/codecnegotiation/   (props changed)
    team/oej/codecnegotiation/.cleancount
    team/oej/codecnegotiation/CREDITS
    team/oej/codecnegotiation/Makefile
    team/oej/codecnegotiation/apps/app_dial.c
    team/oej/codecnegotiation/apps/app_meetme.c
    team/oej/codecnegotiation/apps/app_morsecode.c
    team/oej/codecnegotiation/apps/app_queue.c
    team/oej/codecnegotiation/build_tools/menuselect.c
    team/oej/codecnegotiation/build_tools/menuselect.h
    team/oej/codecnegotiation/build_tools/menuselect_curses.c
    team/oej/codecnegotiation/cdr/cdr_radius.c
    team/oej/codecnegotiation/channel.c
    team/oej/codecnegotiation/channels/chan_alsa.c
    team/oej/codecnegotiation/channels/chan_h323.c
    team/oej/codecnegotiation/channels/chan_iax2.c
    team/oej/codecnegotiation/channels/chan_jingle.c
    team/oej/codecnegotiation/channels/chan_mgcp.c
    team/oej/codecnegotiation/channels/chan_misdn.c
    team/oej/codecnegotiation/channels/chan_oss.c
    team/oej/codecnegotiation/channels/chan_sip.c
    team/oej/codecnegotiation/channels/chan_skinny.c
    team/oej/codecnegotiation/channels/chan_zap.c
    team/oej/codecnegotiation/channels/h323/h323.conf.sample
    team/oej/codecnegotiation/channels/misdn/chan_misdn_config.h
    team/oej/codecnegotiation/channels/misdn/ie.c
    team/oej/codecnegotiation/channels/misdn/isdn_lib.c
    team/oej/codecnegotiation/channels/misdn/isdn_lib.h
    team/oej/codecnegotiation/channels/misdn/isdn_msg_parser.c
    team/oej/codecnegotiation/channels/misdn_config.c
    team/oej/codecnegotiation/cli.c
    team/oej/codecnegotiation/configs/alsa.conf.sample
    team/oej/codecnegotiation/configs/jabber.conf.sample
    team/oej/codecnegotiation/configs/mgcp.conf.sample
    team/oej/codecnegotiation/configs/misdn.conf.sample
    team/oej/codecnegotiation/configs/oss.conf.sample
    team/oej/codecnegotiation/configs/sip.conf.sample
    team/oej/codecnegotiation/configs/skinny.conf.sample
    team/oej/codecnegotiation/configs/zapata.conf.sample
    team/oej/codecnegotiation/frame.c
    team/oej/codecnegotiation/include/asterisk/channel.h
    team/oej/codecnegotiation/include/asterisk/frame.h
    team/oej/codecnegotiation/include/asterisk/jabber.h
    team/oej/codecnegotiation/include/asterisk/linkedlists.h
    team/oej/codecnegotiation/include/asterisk/utils.h
    team/oej/codecnegotiation/res/res_agi.c
    team/oej/codecnegotiation/res/res_jabber.c
    team/oej/codecnegotiation/res/res_musiconhold.c
    team/oej/codecnegotiation/rtp.c
    team/oej/codecnegotiation/translate.c
    team/oej/codecnegotiation/utils.c

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

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

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

Propchange: team/oej/codecnegotiation/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Jun 14 09:10:38 2006
@@ -1,1 +1,1 @@
-/trunk:1-31003
+/trunk:1-31975

Modified: team/oej/codecnegotiation/.cleancount
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/.cleancount?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/.cleancount (original)
+++ team/oej/codecnegotiation/.cleancount Wed Jun 14 09:10:38 2006
@@ -1,1 +1,1 @@
-17
+19

Modified: team/oej/codecnegotiation/CREDITS
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/CREDITS?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/CREDITS (original)
+++ team/oej/codecnegotiation/CREDITS Wed Jun 14 09:10:38 2006
@@ -30,57 +30,99 @@
 === MISCELLANEOUS PATCHES ===
 Jim Dixon - Zapata Telephony and app_rpt
 	http://www.zapatatelephony.org/app_rpt.html
+
 Russell Bryant - Asterisk 1.0 maintainer and misc. enhancements
 	russelb at clemson.edu
+
 Anthony Minessale II - Countless big and small fixes, and relentless forward push
 	anthmct at yahoo.com              http://www.asterlink.com
+
 James Golovich - Innumerable contributions
 	You can find him and asterisk-perl at http://asterisk.gnuinter.net
+
 Andre Bierwirth - Extension hints and status
+
 Oliver Daudey - ISDN4Linux fixes
+
 Pauline Middelink - ISDN4Linux patches and some general patches.
 	She can be found at http://www.polyware.nl/~middelink/En/
+
 Jean-Denis Girard - Various contributions from the South Pacific Islands
 	jd-girard at esoft.pf             http://www.esoft.pf
+
 William Jordan / Vonage - MySQL enhancements to Voicemail
 	wjordan at vonage.com
+
 Jac Kersing - Various fixes
+
 Steven Critchfield - Seek and Trunc functions for playback and recording
 	critch at basesys.com
+
 Jefferson Noxon - app_lookupcidname, app_db, and various other contributions
+
 Klaus-Peter Junghanns - in-band DTMF on SIP and MGCP
+
 Ross Finlayson - Dynamic RTP payload support
+
 Mahmut Fettahlioglu - Audio recording, music-on-hold changes, alaw file
 	format, and various fixes. Can be contacted at mahmut at oa.com.au
+
 James Dennis - Cisco SIP compatibility patches to work with SIP service
 	providers. Can be contacted at asterisk at jdennis.net
+
 Tilghman Lesher - ast_localtime(); ast_say_date_with_format(); 
 	GotoIfTime, Random, SayUnixTime, HasNewVoicemail applications;
 	CUT, SORT, EVAL, CURL, FIELDQTY, STRFTIME, QUEUEAGENT* functions;
 	and other innumerable bug fixes. http://asterisk.drunkcoder.com/
+
 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, 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
+
 William Waites - syslog support, SIP NAT traversal for SIP-UA. ww at styx.org
+
 Rich Murphey - Porting to FreeBSD, NetBSD, OpenBSD, and Darwin.
 	rich at whiteoaklabs.com  http://whiteoaklabs.com
+
 Simon Lockhart - Porting to Solaris (based on work of Logan ???)	
 	simon at slimey.org
+
 Olle E. Johansson - SIP RFC compliance, documentation and testing, testing, testing
 	oej at edvina.net, http://edvina.net
+
 Steve Kann - new jitter buffer for IAX2
 	stevek at stevek.com
+
 Constantine Filin - major contributions to the Asterisk Realtime Architecture
+
 Steve Murphy - privacy support, $[ ] parser upgrade, AEL2 parser upgrade
+
 Claude Patry - bug fixes, feature enhancements, and bug marshalling
 	cpatry at gmail.com
+
 Miroslav Nachev, miro at space-comm.com COSMOS Software Enterprises, Ltd.
 	- for Variable for No Answer Timeout for Attended Transfer
+
+Slav Klenov & Vanheuverzwijn Joachim - development of the generic jitterbuffer
+	Securax Ltd. info at securax.be
+
+Roy Sigurd Karlsbakk - providing funding for generic jitterbuffer development
+	roy at karlsbakk.net, Briiz Telecom AS
+
+Voop A/S, Nuvio Inc and Foniris Telecom A/S - funding for rewrite of SIP transfers
+
+Philippe Sultan - RADIUS CDR module
+	INRIA, http://www.inria.fr/
+
+John Martin, Aupix - Improved video support in the SIP channel
 
 === OTHER CONTRIBUTIONS ===
 John Todd - Monkey sounds and associated teletorture prompt

Modified: team/oej/codecnegotiation/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/Makefile?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/Makefile (original)
+++ team/oej/codecnegotiation/Makefile Wed Jun 14 09:10:38 2006
@@ -282,7 +282,7 @@
 	astmm.o enum.o srv.o dns.o aescrypt.o aestab.o aeskey.o \
 	utils.o plc.o jitterbuf.o dnsmgr.o devicestate.o \
 	netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \
-	cryptostub.o sha1.o http.o
+	cryptostub.o sha1.o http.o fixedjitterbuf.o abstract_jb.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
@@ -371,7 +371,7 @@
 	@echo " +               make install                +"  
 	@echo " +-------------------------------------------+"  
 
-all: cleantest defaults.h config.status menuselect.makeopts depend asterisk subdirs
+all: cleantest config.status menuselect.makeopts depend asterisk subdirs
 
 config.status: configure
 	@CFLAGS="" ./configure
@@ -907,6 +907,7 @@
 cleantest:
 	@if cmp -s .cleancount .lastclean ; then echo ; else \
 		$(MAKE) clean; cp -f .cleancount .lastclean;\
+		$(MAKE) defaults.h;\
 	fi
 
 _uninstall:

Modified: team/oej/codecnegotiation/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/apps/app_dial.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/apps/app_dial.c (original)
+++ team/oej/codecnegotiation/apps/app_dial.c Wed Jun 14 09:10:38 2006
@@ -117,6 +117,8 @@
 "           action post answer options in conjunction with this option.\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"
+"    i    - Asterisk will ignore any forwarding requests it may receive on this\n"
+"           dial attempt.\n"
 "    j    - Jump to priority n+101 if all of the requested channels were busy.\n"
 "    L(x[:y][:z]) - Limit the call to 'x' ms. Play a warning when 'y' ms are\n"
 "           left. Repeat the warning every 'z' ms. The following special\n"
@@ -233,6 +235,7 @@
 	OPT_OPERMODE = 		(1 << 24),
 	OPT_CALLEE_PARK =	(1 << 25),
 	OPT_CALLER_PARK =	(1 << 26),
+	OPT_IGNORE_FORWARDING = (1 << 27),
 } dial_exec_option_flags;
 
 #define DIAL_STILLGOING			(1 << 30)
@@ -262,6 +265,7 @@
 	AST_APP_OPTION_ARG('G', OPT_GOTO, OPT_ARG_GOTO),
 	AST_APP_OPTION('h', OPT_CALLEE_HANGUP),
 	AST_APP_OPTION('H', OPT_CALLER_HANGUP),
+	AST_APP_OPTION('i', OPT_IGNORE_FORWARDING),
 	AST_APP_OPTION('j', OPT_PRIORITY_JUMP),
 	AST_APP_OPTION_ARG('L', OPT_DURATION_LIMIT, OPT_ARG_DURATION_LIMIT),
 	AST_APP_OPTION_ARG('m', OPT_MUSICBACK, OPT_ARG_MUSICBACK),
@@ -479,10 +483,20 @@
 						ast_verbose(VERBOSE_PREFIX_3 "Now forwarding %s to '%s/%s' (thanks to %s)\n", in->name, tech, stuff, c->name);
 					/* Setup parameters */
 					c = o->chan = ast_request_inherit(in, tech, stuff, &cause);
-					if (!c)
-						ast_log(LOG_NOTICE, "Unable to create local channel for call forward to '%s/%s' (cause = %d)\n", tech, stuff, cause);
-					else
-						ast_channel_inherit_variables(in, o->chan);
+					/* If we have been told to ignore forwards, just set this channel to null and continue processing extensions normally */
+					if (ast_test_flag(peerflags, OPT_IGNORE_FORWARDING)) {
+						if (option_verbose > 2)
+							ast_verbose(VERBOSE_PREFIX_3 "Forwarding %s to '%s/%s' prevented.\n", in->name, tech, stuff);
+						c = o->chan = NULL;
+						cause = AST_CAUSE_BUSY;
+					} else {
+						/* Setup parameters */
+						c = o->chan = ast_request(tech, in->nativeformats, stuff, &cause);
+						if (!c)
+							ast_log(LOG_NOTICE, "Unable to create local channel for call forward to '%s/%s' (cause = %d)\n", tech, stuff, cause);
+						else
+							ast_channel_inherit_variables(in, o->chan);
+					}
 				} else {
 					if (option_verbose > 2)
 						ast_verbose(VERBOSE_PREFIX_3 "Too many forwards from %s\n", c->name);
@@ -819,7 +833,7 @@
 		if (option_verbose > 2)
 			ast_verbose(VERBOSE_PREFIX_3 "Setting operator services mode to %d.\n", opermode);
 	}
-
+	
 	if (ast_test_flag(&opts, OPT_DURATION_STOP) && !ast_strlen_zero(opt_args[OPT_ARG_DURATION_STOP])) {
 		calldurationlimit = atoi(opt_args[OPT_ARG_DURATION_STOP]);
 		if (!calldurationlimit) {
@@ -1015,7 +1029,7 @@
 	/* If a channel group has been specified, get it for use when we create peer channels */
 	outbound_group = pbx_builtin_getvar_helper(chan, "OUTBOUND_GROUP");
 
-	ast_copy_flags(peerflags, &opts, OPT_DTMF_EXIT | OPT_GO_ON | OPT_ORIGINAL_CLID | OPT_CALLER_HANGUP);
+	ast_copy_flags(peerflags, &opts, OPT_DTMF_EXIT | OPT_GO_ON | OPT_ORIGINAL_CLID | OPT_CALLER_HANGUP | OPT_IGNORE_FORWARDING);
 	/* loop through the list of dial destinations */
 	rest = args.peers;
 	while ((cur = strsep(&rest, "&")) ) {
@@ -1068,8 +1082,15 @@
 				if (option_verbose > 2)
 					ast_verbose(VERBOSE_PREFIX_3 "Now forwarding %s to '%s/%s' (thanks to %s)\n", chan->name, tech, stuff, tmp->chan->name);
 				ast_hangup(tmp->chan);
-				/* Setup parameters */
-				tmp->chan = ast_request_inherit(chan, tech, stuff, &cause);
+				/* If we have been told to ignore forwards, just set this channel to null and continue processing extensions normally */
+				if (ast_test_flag(&opts, OPT_IGNORE_FORWARDING)) {
+					tmp->chan = NULL;
+					cause = AST_CAUSE_BUSY;
+					if (option_verbose > 2)
+						ast_verbose(VERBOSE_PREFIX_3 "Forwarding %s to '%s/%s' prevented.\n", chan->name, tech, stuff);
+				} else {
+					tmp->chan = ast_request_inherit(chan, tech, stuff, &cause);
+				}
 				if (!tmp->chan)
 					ast_log(LOG_NOTICE, "Unable to create local channel for call forward to '%s/%s' (cause = %d)\n", tech, stuff, cause);
 				else

Modified: team/oej/codecnegotiation/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/apps/app_meetme.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/apps/app_meetme.c (original)
+++ team/oej/codecnegotiation/apps/app_meetme.c Wed Jun 14 09:10:38 2006
@@ -151,7 +151,7 @@
 	/*! If set, user will be asked to record name on entry of conference 
 	 *  without review */
 	CONFFLAG_STARTMUTED = (1 << 24)
-	/*! If set, the user will be initially muted by admin */
+	/*! If set, the user will be initially self-muted */
 };
 
 AST_APP_OPTIONS(meetme_opts, {
@@ -212,7 +212,7 @@
 "      'i' -- announce user join/leave with review\n"
 "      'I' -- announce user join/leave without review\n"
 "      'l' -- set listen only mode (Listen only, no talking)\n"
-"      'm' -- set initially muted by admin\n"
+"      'm' -- set initially muted\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"
@@ -250,10 +250,10 @@
 "      'K' -- Kick all users out of conference\n"
 "      'l' -- Unlock conference\n"
 "      'L' -- Lock conference\n"
-"      'm' -- Unmute conference\n"
-"      'M' -- Mute conference\n"
-"      'n' -- Unmute entire conference (except admin)\n"
-"      'N' -- Mute entire conference (except admin)\n"
+"      'm' -- Unmute one user\n"
+"      'M' -- Mute one user\n"
+"      'n' -- Unmute all users in the conference\n"
+"      'N' -- Mute all non-admin users in the conference\n"
 "      'r' -- Reset one user's volume settings\n"
 "      'R' -- Reset all users volume settings\n"
 "      's' -- Lower entire conference speaking volume\n"
@@ -703,7 +703,7 @@
 					user->chan->name,
 					user->userflags & CONFFLAG_ADMIN ? "(Admin)" : "",
 					user->userflags & CONFFLAG_MONITOR ? "(Listen only)" : "",
-					user->adminflags & ADMINFLAG_MUTED ? "(Admin Muted)" : "",
+					user->adminflags & ADMINFLAG_MUTED ? "(Admin Muted)" : user->adminflags & ADMINFLAG_SELFMUTED ? "(Muted)" : "",
 					istalking(user->talking), hr, min, sec);
 			else 
 				ast_cli(fd, "%d!%s!%s!%s!%s!%s!%s!%d!%02d:%02d:%02d\n",
@@ -713,7 +713,7 @@
 					user->chan->name,
 					user->userflags  & CONFFLAG_ADMIN   ? "1" : "",
 					user->userflags  & CONFFLAG_MONITOR ? "1" : "",
-					user->adminflags & ADMINFLAG_MUTED  ? "1" : "",
+					user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED)  ? "1" : "",
 					user->talking, hr, min, sec);
 			
 		}
@@ -964,7 +964,7 @@
 
 	user->chan = chan;
 	user->userflags = confflags;
-	user->adminflags = (confflags & CONFFLAG_STARTMUTED) ? ADMINFLAG_MUTED : 0;
+	user->adminflags = (confflags & CONFFLAG_STARTMUTED) ? ADMINFLAG_SELFMUTED : 0;
 	user->talking = -1;
 	conf->users++;
 	/* Update table */
@@ -1376,7 +1376,7 @@
 					user->zapchannel = !retryzap;
 					goto zapretry;
 				}
-				if ((confflags & CONFFLAG_MONITOR) || (user->adminflags & ADMINFLAG_MUTED))
+				if ((confflags & CONFFLAG_MONITOR) || (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED)))
 					f = ast_read_noaudio(c);
 				else
 					f = ast_read(c);
@@ -1480,13 +1480,16 @@
 								menu_active = 0;
 
 								/* for admin, change both admin and use flags */
-								if (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED)) {
+								if (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED))
 									user->adminflags &= ~(ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED);
-									if (!ast_streamfile(chan, "conf-unmuted", chan->language))
+								else
+									user->adminflags |= (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED);
+
+								if ((confflags & CONFFLAG_MONITOR) || (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED))) {
+									if (!ast_streamfile(chan, "conf-muted", chan->language))
 										ast_waitstream(chan, "");
 								} else {
-									user->adminflags |= (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED);
-									if (!ast_streamfile(chan, "conf-muted", chan->language))
+									if (!ast_streamfile(chan, "conf-unmuted", chan->language))
 										ast_waitstream(chan, "");
 								}
 								break;
@@ -1555,7 +1558,7 @@
 								user->adminflags ^= ADMINFLAG_SELFMUTED;
 
 								/* they can't override the admin mute state */
-								if (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED)) {
+								if ((confflags & CONFFLAG_MONITOR) || (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED))) {
 									if (!ast_streamfile(chan, "conf-muted", chan->language))
 										ast_waitstream(chan, "");
 								} else {
@@ -1615,7 +1618,7 @@
 					fr.offset = AST_FRIENDLY_OFFSET;
 					if (!user->listen.actual && 
 						((confflags & CONFFLAG_MONITOR) || 
-						 (user->adminflags & ADMINFLAG_MUTED) ||
+						 (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED)) ||
 						 (!user->talking && (confflags & CONFFLAG_OPTIMIZETALKER))
 						 )) {
 						int index;
@@ -2297,13 +2300,13 @@
 				break;					
 			case 109: /* m: Unmute */ 
 				if (user) {
-					user->adminflags &= ~ADMINFLAG_MUTED;
+					user->adminflags &= ~(ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED);
 				} else
 					ast_log(LOG_NOTICE, "Specified User not found!\n");
 				break;
 			case 110: /* n: Unmute all users */
 				AST_LIST_TRAVERSE(&cnf->userlist, user, list)
-					user->adminflags &= ~ADMINFLAG_MUTED;
+					user->adminflags &= ~(ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED);
 				break;
 			case 107: /* k: Kick user */ 
 				if (user)
@@ -2424,7 +2427,7 @@
 	if (mute)
 		user->adminflags |= ADMINFLAG_MUTED;	/* request user muting */
 	else
-		user->adminflags &= ~ADMINFLAG_MUTED;	/* request user unmuting */
+		user->adminflags &= ~(ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED);	/* request user unmuting */
 
 	AST_LIST_UNLOCK(&confs);
 

Modified: team/oej/codecnegotiation/apps/app_morsecode.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/apps/app_morsecode.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/apps/app_morsecode.c (original)
+++ team/oej/codecnegotiation/apps/app_morsecode.c Wed Jun 14 09:10:38 2006
@@ -74,10 +74,10 @@
 	"--..--", /* 44 - , */
 	"-....-", /* 45 - - */
 	".-.-.-", /* 46 - . */
-	"-··-·",  /* 47 - / */
+	"-..-.",  /* 47 - / */
 	"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.", /* 48-57 - 0-9 */
 	"---...", /* 58 - : */
-	"-·-·-·", /* 59 - ; */
+	"-.-.-.", /* 59 - ; */
 	"",       /* 60 - < */
 	"-...-",  /* 61 - = */
 	"",       /* 62 - > */
@@ -86,18 +86,18 @@
 	".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--",
 	"-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..",
 	"-.--.-", /* 91 - [ (really '(') */
-	"-··-·",  /* 92 - \ (really '/') */
+	"-..-.",  /* 92 - \ (really '/') */
 	"-.--.-", /* 93 - ] (really ')') */
 	"",       /* 94 - ^ */
-	"··--·-", /* 95 - _ */
+	"..--.-", /* 95 - _ */
 	".----.", /* 96 - ` */
 	".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--",
 	"-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..",
 	"-.--.-", /* 123 - { (really '(') */
 	"",       /* 124 - | */
 	"-.--.-", /* 125 - } (really ')') */
-	"-··-·",  /* 126 - ~ (really bar) */
-	"· · ·",  /* 127 - <del> (error) */
+	"-..-.",  /* 126 - ~ (really bar) */
+	". . .",  /* 127 - <del> (error) */
 };
 
 static void playtone(struct ast_channel *chan, int tone, int len)

Modified: team/oej/codecnegotiation/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/apps/app_queue.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/apps/app_queue.c (original)
+++ team/oej/codecnegotiation/apps/app_queue.c Wed Jun 14 09:10:38 2006
@@ -2606,7 +2606,7 @@
 		if (bridge != AST_PBX_NO_HANGUP_PEER)
 			ast_hangup(peer);
 		update_queue(qe->parent, member);
-		res = bridge ? -1 : 0;
+		res = bridge ? bridge : 1;
 	}
 out:
 	hangupcalls(outgoing, NULL);

Modified: team/oej/codecnegotiation/build_tools/menuselect.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/build_tools/menuselect.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/build_tools/menuselect.c (original)
+++ team/oej/codecnegotiation/build_tools/menuselect.c Wed Jun 14 09:10:38 2006
@@ -39,20 +39,6 @@
 #include "asterisk/linkedlists.h"
 
 #undef MENUSELECT_DEBUG
-
-struct depend {
-	/*! the name of the dependency */
-	const char *name;
-	/*! for linking */
-	AST_LIST_ENTRY(depend) list;
-};
-
-struct conflict {
-	/*! the name of the conflict */
-	const char *name;
-	/*! for linking */
-	AST_LIST_ENTRY(conflict) list;
-};
 
 /*! The list of categories */
 struct categories categories = AST_LIST_HEAD_NOLOCK_INIT_VALUE;

Modified: team/oej/codecnegotiation/build_tools/menuselect.h
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/build_tools/menuselect.h?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/build_tools/menuselect.h (original)
+++ team/oej/codecnegotiation/build_tools/menuselect.h Wed Jun 14 09:10:38 2006
@@ -31,8 +31,19 @@
 #define OUTPUT_MAKEOPTS_DEFAULT "menuselect.makeopts"
 #define MENUSELECT_DEPS         "build_tools/menuselect-deps"
 
-struct depend;
-struct conflict;
+struct depend {
+	/*! the name of the dependency */
+	const char *name;
+	/*! for linking */
+	AST_LIST_ENTRY(depend) list;
+};
+
+struct conflict {
+	/*! the name of the conflict */
+	const char *name;
+	/*! for linking */
+	AST_LIST_ENTRY(conflict) list;
+};
 
 struct member {
 	/*! What will be sent to the makeopts file */

Modified: team/oej/codecnegotiation/build_tools/menuselect_curses.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/build_tools/menuselect_curses.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/build_tools/menuselect_curses.c (original)
+++ team/oej/codecnegotiation/build_tools/menuselect_curses.c Wed Jun 14 09:10:38 2006
@@ -126,7 +126,9 @@
 {
 	int i = 0;
 	int j = 0;
-	struct member *mem;
+	struct member *mem, *curmem = NULL;
+	struct depend *dep;
+	struct conflict *con;
 	char buf[64];
 	const char *desc = NULL;
 
@@ -146,15 +148,35 @@
 		waddstr(menu, buf);
 		
 		if (curopt + 1 == i)
-			desc = mem->displayname;
+			curmem = mem;
 
 		if (i == end)
 			break;
 	}
 
-	if (desc) {
+	if (curmem->displayname) {
 		wmove(menu, end - start + 2, max_x / 2 - 16);
-		waddstr(menu, desc);
+		waddstr(menu, curmem->displayname);
+	}
+	if (!AST_LIST_EMPTY(&curmem->deps)) {
+		wmove(menu, end - start + 3, max_x / 2 - 16);
+		strcpy(buf, "Depends on: ");
+		AST_LIST_TRAVERSE(&curmem->deps, dep, list) {
+			strncat(buf, dep->name, sizeof(buf) - strlen(buf) - 1);
+			if (AST_LIST_NEXT(dep, list))
+				strncat(buf, ", ", sizeof(buf) - strlen(buf) - 1);
+		}
+		waddstr(menu, buf);
+	}
+	if (!AST_LIST_EMPTY(&curmem->conflicts)) {
+		wmove(menu, end - start + 4, max_x / 2 - 16);
+		strcpy(buf, "Conflicts with: ");
+		AST_LIST_TRAVERSE(&curmem->conflicts, con, list) {
+			strncat(buf, con->name, sizeof(buf) - strlen(buf) - 1);
+			if (AST_LIST_NEXT(con, list))
+				strncat(buf, ", ", sizeof(buf) - strlen(buf) - 1);
+		}
+		waddstr(menu, buf);
 	}
 	wmove(menu, curopt - start, max_x / 2 - 9);
 

Modified: team/oej/codecnegotiation/cdr/cdr_radius.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/cdr/cdr_radius.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/cdr/cdr_radius.c (original)
+++ team/oej/codecnegotiation/cdr/cdr_radius.c Wed Jun 14 09:10:38 2006
@@ -47,6 +47,7 @@
 #include "asterisk/module.h"
 #include "asterisk/logger.h"
 #include "asterisk/utils.h"
+#include "asterisk/options.h"
 
 /*! ISO 8601 standard format */
 #define DATE_FORMAT "%Y-%m-%d %T %z"
@@ -216,7 +217,8 @@
 	VALUE_PAIR *send = NULL;
 
 	if (build_radius_record(&send, cdr)) {
-		ast_log(LOG_WARNING, "Unable to create RADIUS record. CDR not recorded!\n");
+		if (option_debug)
+			ast_log(LOG_DEBUG, "Unable to create RADIUS record. CDR not recorded!\n");
 		return result;
 	}
 	

Modified: team/oej/codecnegotiation/channel.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/channel.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/channel.c (original)
+++ team/oej/codecnegotiation/channel.c Wed Jun 14 09:10:38 2006
@@ -1011,6 +1011,9 @@
 	
 	while ((vardata = AST_LIST_REMOVE_HEAD(headp, entries)))
 		ast_var_delete(vardata);
+
+	/* Destroy the jitterbuffer */
+	ast_jb_destroy(chan);
 
 	ast_string_field_free_all(chan);
 	free(chan);
@@ -2094,7 +2097,7 @@
 int ast_internal_timing_enabled(struct ast_channel *chan)
 {
 	int ret = ast_opt_internal_timing && chan->timingfd > -1;
-	if (option_debug > 3)
+	if (option_debug > 20)
 		ast_log(LOG_DEBUG, "Internal timing is %s (option_internal_timing=%d chan->timingfd=%d)\n", ret? "enabled": "disabled", ast_opt_internal_timing, chan->timingfd);
 	return ret;
 }
@@ -2547,7 +2550,12 @@
 					timeout = 0;		/* trick to force exit from the while() */
 					break;
 
-				case AST_CONTROL_PROGRESS:	/* Ignore */
+				/* Ignore these */
+				case AST_CONTROL_PROGRESS:
+				case AST_CONTROL_PROCEEDING:
+				case AST_CONTROL_HOLD:
+				case AST_CONTROL_UNHOLD:
+				case AST_CONTROL_VIDUPDATE:
 				case -1:			/* Ignore -- just stopping indications */
 					break;
 
@@ -2812,6 +2820,14 @@
 int ast_channel_masquerade(struct ast_channel *original, struct ast_channel *clone)
 {
 	int res = -1;
+
+	/* each of these channels may be sitting behind a channel proxy (i.e. chan_agent)
+	   and if so, we don't really want to masquerade it, but its proxy */
+	if (original->_bridge && (original->_bridge != ast_bridged_channel(original)))
+		original = original->_bridge;
+
+	if (clone->_bridge && (clone->_bridge != ast_bridged_channel(clone)))
+		clone = clone->_bridge;
 
 	if (original == clone) {
 		ast_log(LOG_WARNING, "Can't masquerade channel '%s' into itself!\n", original->name);
@@ -3290,6 +3306,9 @@
 	int watch_c0_dtmf;
 	int watch_c1_dtmf;
 	void *pvt0, *pvt1;
+	/* Indicates whether a frame was queued into a jitterbuffer */
+	int frame_put_in_jb = 0;
+	int jb_in_use;
 	int to;
 	
 	cs[0] = c0;
@@ -3301,6 +3320,9 @@
 	watch_c0_dtmf = config->flags & AST_BRIDGE_DTMF_CHANNEL_0;
 	watch_c1_dtmf = config->flags & AST_BRIDGE_DTMF_CHANNEL_1;
 
+	/* Check the need of a jitterbuffer for each channel */
+	jb_in_use = ast_jb_do_usecheck(c0, c1);
+
 	for (;;) {
 		struct ast_channel *who, *other;
 
@@ -3319,9 +3341,15 @@
 			}
 		} else
 			to = -1;
+		/* Calculate the appropriate max sleep interval - in general, this is the time,
+		   left to the closest jb delivery moment */
+		if (jb_in_use)
+			to = ast_jb_get_when_to_wakeup(c0, c1, to);
 		who = ast_waitfor_n(cs, 2, &to);
 		if (!who) {
-			ast_log(LOG_DEBUG, "Nobody there, continuing...\n");
+			/* No frame received within the specified timeout - check if we have to deliver now */
+			if (jb_in_use)
+				ast_jb_get_and_deliver(c0, c1);
 			if (c0->_softhangup == AST_SOFTHANGUP_UNBRIDGE || c1->_softhangup == AST_SOFTHANGUP_UNBRIDGE) {
 				if (c0->_softhangup == AST_SOFTHANGUP_UNBRIDGE)
 					c0->_softhangup = 0;
@@ -3341,6 +3369,9 @@
 		}
 
 		other = (who == c0) ? c1 : c0; /* the 'other' channel */
+		/* Try add the frame info the who's bridged channel jitterbuff */
+		if (jb_in_use)
+			frame_put_in_jb = !ast_jb_put(other, f);
 
 		if ((f->frametype == AST_FRAME_CONTROL) && !(config->flags & AST_BRIDGE_IGNORE_SIGS)) {
 			int bridge_exit = 0;
@@ -3377,8 +3408,13 @@
 				ast_log(LOG_DEBUG, "Got DTMF on channel (%s)\n", who->name);
 				break;
 			}
-			/* other frames go to the other side */
-			ast_write(other, f);
+			/* Write immediately frames, not passed through jb */
+			if (!frame_put_in_jb)
+				ast_write(other, f);
+				
+			/* Check if we have to deliver now */
+			if (jb_in_use)
+				ast_jb_get_and_deliver(c0, c1);
 		}
 		/* XXX do we want to pass on also frames not matched above ? */
 		ast_frfree(f);

Modified: team/oej/codecnegotiation/channels/chan_alsa.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/channels/chan_alsa.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/channels/chan_alsa.c (original)
+++ team/oej/codecnegotiation/channels/chan_alsa.c Wed Jun 14 09:10:38 2006
@@ -60,6 +60,7 @@
 #include "asterisk/causes.h"
 #include "asterisk/endian.h"
 #include "asterisk/stringfields.h"
+#include "asterisk/abstract_jb.h"
 
 #include "busy.h"
 #include "ringtone.h"
@@ -69,6 +70,16 @@
 #ifdef ALSA_MONITOR
 #include "alsa-monitor.h"
 #endif
+
+/*! Global jitterbuffer configuration - by default, jb is disabled */
+static struct ast_jb_conf default_jbconf =
+{
+	.flags = 0,
+	.max_size = -1,
+	.resync_threshold = -1,
+	.impl = ""
+};
+static struct ast_jb_conf global_jbconf;
 
 #define DEBUG 0
 /* Which device to use */
@@ -812,6 +823,8 @@
 				tmp = NULL;
 			}
 		}
+		if (tmp)
+			ast_jb_configure(tmp, &global_jbconf);
 	}
 	return tmp;
 }
@@ -1051,9 +1064,18 @@
 	int x;
 	struct ast_config *cfg;
 	struct ast_variable *v;
+
+	/* Copy the default jb config over global_jbconf */
+	memcpy(&global_jbconf, &default_jbconf, sizeof(struct ast_jb_conf));
+
 	if ((cfg = ast_config_load(config))) {
 		v = ast_variable_browse(cfg, "general");
 		while(v) {
+			/* handle jb conf */
+			if (!ast_jb_read_conf(&global_jbconf, v->name, v->value)) {
+				v = v->next;
+				continue;
+			}
 			if (!strcasecmp(v->name, "autoanswer"))
 				autoanswer = ast_true(v->value);
 			else if (!strcasecmp(v->name, "silencesuppression"))

Modified: team/oej/codecnegotiation/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/channels/chan_h323.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/channels/chan_h323.c (original)
+++ team/oej/codecnegotiation/channels/chan_h323.c Wed Jun 14 09:10:38 2006
@@ -83,6 +83,7 @@
 #include "asterisk/dsp.h"
 #include "asterisk/causes.h"
 #include "asterisk/stringfields.h"
+#include "asterisk/abstract_jb.h"
 #ifdef __cplusplus
 }
 #endif
@@ -104,6 +105,16 @@
 
 /* global debug flag */
 int h323debug;
+
+/*! Global jitterbuffer configuration - by default, jb is disabled */
+static struct ast_jb_conf default_jbconf =
+{
+	.flags = 0,
+	.max_size = -1,
+	.resync_threshold = -1,
+	.impl = ""
+};
+static struct ast_jb_conf global_jbconf;
 
 /** Variables required by Asterisk */
 static const char desc[] = "The NuFone Network's Open H.323 Channel Driver";
@@ -211,7 +222,7 @@
 	.type = "H323",
 	.description = tdesc,
 	.capabilities = ((AST_FORMAT_MAX_AUDIO << 1) - 1),
-	.properties = AST_CHAN_TP_WANTSJITTER,
+	.properties = AST_CHAN_TP_WANTSJITTER | AST_CHAN_TP_CREATESJITTER,
 	.requester = oh323_request,
 	.send_digit = oh323_digit,
 	.call = oh323_call,
@@ -786,6 +797,10 @@
 				ch = NULL;
 			}
 		}
+
+		/* Configure the new channel jb */
+		if (ch && pvt && pvt->rtp)
+			ast_jb_configure(ch, &global_jbconf);
 	} else  {
 		ast_log(LOG_WARNING, "Unable to allocate channel structure\n");
 	}
@@ -2017,8 +2032,18 @@
 	global_options.dtmfmode = H323_DTMF_RFC2833;
 	global_options.capability = GLOBAL_CAPABILITY;
 	global_options.bridge = 1;		/* Do native bridging by default */
+
+	/* Copy the default jb config over global_jbconf */
+	memcpy(&global_jbconf, &default_jbconf, sizeof(struct ast_jb_conf));
+
 	v = ast_variable_browse(cfg, "general");
-	while(v) {
+	while (v) {
+		/* handle jb conf */
+                if (!ast_jb_read_conf(&global_jbconf, v->name, v->value)) {
+			v = v->next;
+			continue;
+		}
+
 		/* Create the interface list */
 		if (!strcasecmp(v->name, "port")) {
 			h323_signalling_port = (int)strtol(v->value, NULL, 10);

Modified: team/oej/codecnegotiation/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/channels/chan_iax2.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/channels/chan_iax2.c (original)
+++ team/oej/codecnegotiation/channels/chan_iax2.c Wed Jun 14 09:10:38 2006
@@ -1543,6 +1543,7 @@
 	  the IAX thread with the iaxsl lock held. */
 	struct iax_frame *fr = data;
 	fr->retrans = -1;
+	fr->af.has_timing_info = 0;
 	if (iaxs[fr->callno] && !ast_test_flag(iaxs[fr->callno], IAX_ALREADYGONE))
 		iax2_queue_frame(fr->callno, &fr->af);
 	/* Free our iax frame */

Modified: team/oej/codecnegotiation/channels/chan_jingle.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/channels/chan_jingle.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/channels/chan_jingle.c (original)
+++ team/oej/codecnegotiation/channels/chan_jingle.c Wed Jun 14 09:10:38 2006
@@ -69,10 +69,21 @@
 #include "asterisk/utils.h"
 #include "asterisk/causes.h"
 #include "asterisk/astobj.h"
+#include "asterisk/abstract_jb.h"
 #include "asterisk/jabber.h"
 #include "asterisk/jingle.h"
 
 #define JINGLE_CONFIG "jingle.conf"
+
+/*! Global jitterbuffer configuration - by default, jb is disabled */
+static struct ast_jb_conf default_jbconf =
+{
+	.flags = 0,
+	.max_size = -1,
+	.resync_threshold = -1,
+	.impl = ""
+};
+static struct ast_jb_conf global_jbconf;
 
 enum jingle_protocol {
 	AJI_PROTOCOL_UDP = 1,
@@ -191,6 +202,7 @@
 	.indicate = jingle_indicate,
 	.fixup = jingle_fixup,
 	.send_html = jingle_sendhtml,
+	.properties = AST_CHAN_TP_WANTSJITTER | AST_CHAN_TP_CREATESJITTER
 };
 
 static struct sockaddr_in bindaddr = { 0, };	/*!< The address we bind to */
@@ -772,6 +784,11 @@
 		ast_hangup(tmp);
 		tmp = NULL;
 	}
+
+	/* Configure the new channel jb */
+	if (tmp && i && i->rtp)
+		ast_jb_configure(tmp, &global_jbconf);
+
 	return tmp;
 }
 
@@ -1452,8 +1469,15 @@
 		return 0;
 	}
 
+	/* Copy the default jb config over global_jbconf */
+	memcpy(&global_jbconf, &default_jbconf, sizeof(struct ast_jb_conf));
+
 	cat = ast_category_browse(cfg, NULL);
 	for (var = ast_variable_browse(cfg, "general"); var; var = var->next) {
+		/* handle jb conf */
+		if (!ast_jb_read_conf(&global_jbconf, var->name, var->value))
+			continue;
+
 		if (!strcasecmp(var->name, "allowguest"))
 			allowguest =
 				(ast_true(ast_variable_retrieve(cfg, "general", "allowguest"))) ? 1 : 0;

Modified: team/oej/codecnegotiation/channels/chan_mgcp.c
URL: http://svn.digium.com/view/asterisk/team/oej/codecnegotiation/channels/chan_mgcp.c?rev=34088&r1=34087&r2=34088&view=diff
==============================================================================
--- team/oej/codecnegotiation/channels/chan_mgcp.c (original)
+++ team/oej/codecnegotiation/channels/chan_mgcp.c Wed Jun 14 09:10:38 2006
@@ -117,6 +117,7 @@
 #include "asterisk/dsp.h"
 #include "asterisk/devicestate.h"
 #include "asterisk/stringfields.h"
+#include "asterisk/abstract_jb.h"
 
 #ifndef IPTOS_MINCOST
 #define IPTOS_MINCOST 0x02
@@ -136,6 +137,16 @@
 #ifndef INADDR_NONE
 #define INADDR_NONE (in_addr_t)(-1)
 #endif
+
+/*! Global jitterbuffer configuration - by default, jb is disabled */
+static struct ast_jb_conf default_jbconf =
+{
+	.flags = 0,
+	.max_size = -1,
+	.resync_threshold = -1,
+	.impl = ""
+};
+static struct ast_jb_conf global_jbconf;
 
 static const char tdesc[] = "Media Gateway Control Protocol (MGCP)";
 static const char config[] = "mgcp.conf";
@@ -353,10 +364,6 @@
 			This should be obsoleted */
 	char cxident[80];
 	char callid[80];
-/* SC: obsolete
-	time_t lastouttime;
-	int lastout;
-*/
 	int cxmode;
 	struct mgcp_request *cx_queue; /*!< SC: pending CX commands */
 	ast_mutex_t cx_queue_lock;     /*!< SC: CX queue lock */
@@ -364,10 +371,6 @@
 	int iseq; /* Not used? RTP? */
 	int outgoing;
 	int alreadygone;
-/* SC: obsolete
-	int messagepending;
-	struct mgcp_message *msgs;
-*/
 	struct mgcp_subchannel *next; /* for out circular linked list */
 };
 
@@ -503,7 +506,7 @@
 	.type = "MGCP",
 	.description = tdesc,
 	.capabilities = AST_FORMAT_ULAW,
-	.properties = AST_CHAN_TP_WANTSJITTER,
+	.properties = AST_CHAN_TP_WANTSJITTER | AST_CHAN_TP_CREATESJITTER,
 	.requester = mgcp_request,
 	.devicestate = mgcp_devicestate,
 	.call = mgcp_call,
@@ -1498,6 +1501,10 @@
 			ast_verbose(VERBOSE_PREFIX_3 "MGCP mgcp_new(%s) created in state: %s\n",
 				tmp->name, ast_state2str(state));
 		}
+
+		/* Configure the new channel jb */
+		if (tmp && sub && sub->rtp)
+			ast_jb_configure(tmp, &global_jbconf);
 	} else {
 		ast_log(LOG_WARNING, "Unable to allocate channel structure\n");
 	}
@@ -4164,8 +4171,18 @@
 	}
 	memset(&bindaddr, 0, sizeof(bindaddr));
 	dtmfmode = 0;
+
+	/* Copy the default jb config over global_jbconf */
+	memcpy(&global_jbconf, &default_jbconf, sizeof(struct ast_jb_conf));
+

[... 6272 lines stripped ...]


More information about the asterisk-commits mailing list