[asterisk-commits] irroot: branch irroot/patches r337894 - /team/irroot/patches/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Sep 23 06:20:31 CDT 2011


Author: irroot
Date: Fri Sep 23 06:20:27 2011
New Revision: 337894

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=337894
Log:
Update patches to latest

Modified:
    team/irroot/patches/distrotech-1.8.7.patch
    team/irroot/patches/distrotech-1.8.patch
    team/irroot/patches/distrotech-10.patch
    team/irroot/patches/distrotech-trunk.patch
    team/irroot/patches/t38gateway-1.8.patch
    team/irroot/patches/t38gateway-trunk.patch

Modified: team/irroot/patches/distrotech-1.8.7.patch
URL: http://svnview.digium.com/svn/asterisk/team/irroot/patches/distrotech-1.8.7.patch?view=diff&rev=337894&r1=337893&r2=337894
==============================================================================
--- team/irroot/patches/distrotech-1.8.7.patch (original)
+++ team/irroot/patches/distrotech-1.8.7.patch Fri Sep 23 06:20:27 2011
@@ -1,10 +1,6 @@
-Index: configure
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
 Index: channels/chan_sip.c
 ===================================================================
---- channels/chan_sip.c	(revision 335128)
+--- channels/chan_sip.c	(revision 336934)
 +++ channels/chan_sip.c	(working copy)
 @@ -4316,6 +4316,9 @@
  			case T38_ENABLED:
@@ -409,7 +405,7 @@
  
 Index: channels/chan_agent.c
 ===================================================================
---- channels/chan_agent.c	(revision 335128)
+--- channels/chan_agent.c	(revision 336934)
 +++ channels/chan_agent.c	(working copy)
 @@ -1506,6 +1506,7 @@
  	char *talkingto = NULL;
@@ -438,7 +434,7 @@
  				talkingto = "n/a";
 Index: channels/chan_misdn.c
 ===================================================================
---- channels/chan_misdn.c	(revision 335128)
+--- channels/chan_misdn.c	(revision 336934)
 +++ channels/chan_misdn.c	(working copy)
 @@ -7871,64 +7871,63 @@
  		}
@@ -553,7 +549,7 @@
  				port = misdn_cfg_get_next_port(port)) {
 Index: channels/sip/include/sip.h
 ===================================================================
---- channels/sip/include/sip.h	(revision 335128)
+--- channels/sip/include/sip.h	(revision 336934)
 +++ channels/sip/include/sip.h	(working copy)
 @@ -352,9 +352,11 @@
  
@@ -588,7 +584,7 @@
  
 Index: channels/sip/include/sdp_crypto.h
 ===================================================================
---- channels/sip/include/sdp_crypto.h	(revision 335128)
+--- channels/sip/include/sdp_crypto.h	(revision 336934)
 +++ channels/sip/include/sdp_crypto.h	(working copy)
 @@ -31,6 +31,7 @@
  #include <asterisk/rtp_engine.h>
@@ -623,7 +619,7 @@
  /*! \brief Return the a_crypto value of the sdp_crypto struct
 Index: channels/sip/include/srtp.h
 ===================================================================
---- channels/sip/include/srtp.h	(revision 335128)
+--- channels/sip/include/srtp.h	(revision 336934)
 +++ channels/sip/include/srtp.h	(working copy)
 @@ -34,6 +34,8 @@
  #define SRTP_ENCR_OPTIONAL	(1 << 1)	/* SRTP encryption optional */
@@ -636,7 +632,7 @@
  struct sip_srtp {
 Index: channels/sip/sdp_crypto.c
 ===================================================================
---- channels/sip/sdp_crypto.c	(revision 335128)
+--- channels/sip/sdp_crypto.c	(revision 336934)
 +++ channels/sip/sdp_crypto.c	(working copy)
 @@ -32,6 +32,7 @@
  #include "asterisk/options.h"
@@ -688,7 +684,7 @@
  
 Index: channels/chan_local.c
 ===================================================================
---- channels/chan_local.c	(revision 335128)
+--- channels/chan_local.c	(revision 336934)
 +++ channels/chan_local.c	(working copy)
 @@ -588,6 +588,7 @@
  static int local_write(struct ast_channel *ast, struct ast_frame *f)
@@ -721,9 +717,9 @@
  	if (!ast_test_flag(p, LOCAL_ALREADY_MASQED)) {
 Index: configure.ac
 ===================================================================
---- configure.ac	(revision 335128)
+--- configure.ac	(revision 336934)
 +++ configure.ac	(working copy)
-@@ -1699,7 +1699,7 @@
+@@ -1679,7 +1679,7 @@
     AST_EXT_LIB_CHECK([SUPPSERV], [suppserv], [encodeFac], [mISDNuser/suppserv.h])
     AST_C_DEFINE_CHECK([MISDN_FAC_RESULT], [Fac_RESULT], [mISDNuser/suppserv.h])
     AST_C_DEFINE_CHECK([MISDN_FAC_ERROR], [Fac_ERROR], [mISDNuser/suppserv.h])
@@ -734,7 +730,7 @@
  
 Index: apps/app_queue.c
 ===================================================================
---- apps/app_queue.c	(revision 335128)
+--- apps/app_queue.c	(revision 336934)
 +++ apps/app_queue.c	(working copy)
 @@ -522,11 +522,25 @@
  					<enum name="count">
@@ -1344,7 +1340,7 @@
  				} else {
  					ast_log(LOG_WARNING, "Asked to run MixMonitor on this call, but cannot find the MixMonitor app!\n");
  				}
-@@ -5009,8 +5075,28 @@
+@@ -5009,8 +5075,31 @@
  		qe->handled++;
  		ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "CONNECT", "%ld|%s|%ld", (long) time(NULL) - qe->start, peer->uniqueid,
  													(long)(orig - to > 0 ? (orig - to) / 1000 : 0));
@@ -1355,27 +1351,30 @@
 +			struct ast_cdr *cdr;
 +			struct ast_cdr *newcdr;
 +
++			/* Only work with the last CDR in the stack*/
 +			cdr = qe->chan->cdr;
 +			while (cdr->next) {
 +				cdr = cdr->next;
 +			}
-+			if ((strcasecmp(cdr->uniqueid, qe->chan->uniqueid)) && (strcasecmp(cdr->linkedid, qe->chan->uniqueid))) {
-+				if ((newcdr = ast_cdr_dup(cdr))) {
-+					ast_cdr_init(newcdr, qe->chan);
-+					ast_cdr_reset(newcdr, 0);
-+					ast_lock_channel(qe->chan);
-+					cdr = ast_cdr_append(cdr, newcdr);
-+					cdr = cdr->next;
-+					ast_unlock_channel(qe->chan);
-+				}
++
++			/* If there is no CDR add one to the stack*/
++			if ((strcasecmp(cdr->uniqueid, qe->chan->uniqueid)) && 
++			    (strcasecmp(cdr->linkedid, qe->chan->uniqueid)) &&
++			    (newcdr = ast_cdr_dup(cdr))) {
++				ast_cdr_init(newcdr, qe->chan);
++				ast_cdr_reset(newcdr, 0);
++				ast_channel_lock(qe->chan);
++				cdr = ast_cdr_append(cdr, newcdr);
++				cdr = cdr->next;
++				ast_channel_unlock(qe->chan);
 +			}
-+			ast_copy_string(cdr->dstchannel, member->membername, sizeof(cdr->dstchannel));
++			ast_copy_string(cdr->dstchannel, peer->name, sizeof(cdr->dstchannel));
 +		}
 +
  		if (qe->parent->eventwhencalled)
  			manager_event(EVENT_FLAG_AGENT, "AgentConnect",
  					"Queue: %s\r\n"
-@@ -5188,15 +5274,16 @@
+@@ -5188,15 +5277,16 @@
  
  	ast_copy_string(tmpmem.interface, interface, sizeof(tmpmem.interface));
  	if ((q = ao2_t_find(queues, &tmpq, OBJ_POINTER, "Temporary reference for interface removal"))) {
@@ -1395,7 +1394,7 @@
  				return RES_NOT_DYNAMIC;
  			}
  			q->membercount--;
-@@ -5216,7 +5303,6 @@
+@@ -5216,7 +5306,6 @@
  			res = RES_EXISTS;
  		}
  		ao2_unlock(q);
@@ -1403,7 +1402,7 @@
  		queue_t_unref(q, "Expiring temporary reference");
  	}
  
-@@ -5241,8 +5327,6 @@
+@@ -5241,8 +5330,6 @@
  	if (!(q = load_realtime_queue(queuename)))
  		return res;
  
@@ -1412,7 +1411,7 @@
  	ao2_lock(q);
  	if ((old_member = interface_exists(q, interface)) == NULL) {
  		if ((new_member = create_queue_member(interface, membername, penalty, paused, state_interface))) {
-@@ -5253,13 +5337,14 @@
+@@ -5253,13 +5340,14 @@
  				"Queue: %s\r\n"
  				"Location: %s\r\n"
  				"MemberName: %s\r\n"
@@ -1428,7 +1427,7 @@
  				"dynamic",
  				new_member->penalty, new_member->calls, (int) new_member->lastcall,
  				new_member->status, new_member->paused);
-@@ -5279,7 +5364,6 @@
+@@ -5279,7 +5367,6 @@
  		res = RES_EXISTS;
  	}
  	ao2_unlock(q);
@@ -1436,7 +1435,7 @@
  	queue_t_unref(q, "Expiring temporary reference");
  
  	return res;
-@@ -5367,35 +5451,34 @@
+@@ -5367,35 +5454,34 @@
  	int foundinterface = 0, foundqueue = 0;
  	struct call_queue *q;
  	struct member *mem;
@@ -1489,7 +1488,7 @@
  
  	if (foundinterface) {
  		return RESULT_SUCCESS;
-@@ -5460,8 +5543,6 @@
+@@ -5460,8 +5546,6 @@
  	struct call_queue *cur_queue;
  	char queue_data[PM_MAX_LEN];
  
@@ -1498,7 +1497,7 @@
  	/* Each key in 'pm_family' is the name of a queue */
  	db_tree = ast_db_gettree(pm_family, NULL);
  	for (entry = db_tree; entry; entry = entry->next) {
-@@ -5532,7 +5613,6 @@
+@@ -5532,7 +5616,6 @@
  		queue_t_unref(cur_queue, "Expire reload reference");
  	}
  
@@ -1506,7 +1505,7 @@
  	if (db_tree) {
  		ast_log(LOG_NOTICE, "Queue members successfully reloaded from database.\n");
  		ast_db_freetree(db_tree);
-@@ -5616,6 +5696,8 @@
+@@ -5616,6 +5699,8 @@
  {
  	int res=-1;
  	char *parse, *temppos = NULL;
@@ -1515,7 +1514,7 @@
  	AST_DECLARE_APP_ARGS(args,
  		AST_APP_ARG(queuename);
  		AST_APP_ARG(interface);
-@@ -5641,9 +5723,17 @@
+@@ -5641,9 +5726,17 @@
  
  	ast_debug(1, "queue: %s, member: %s\n", args.queuename, args.interface);
  
@@ -1534,7 +1533,7 @@
  		ast_log(LOG_NOTICE, "Removed interface '%s' from queue '%s'\n", args.interface, args.queuename);
  		pbx_builtin_setvar_helper(chan, "RQMSTATUS", "REMOVED");
  		res = 0;
-@@ -5708,7 +5798,11 @@
+@@ -5708,7 +5801,11 @@
  
  	switch (add_to_queue(args.queuename, args.interface, args.membername, penalty, 0, queue_persistent_members, args.state_interface)) {
  	case RES_OKAY:
@@ -1547,7 +1546,7 @@
  		ast_log(LOG_NOTICE, "Added interface '%s' to queue '%s'\n", args.interface, args.queuename);
  		pbx_builtin_setvar_helper(chan, "AQMSTATUS", "ADDED");
  		res = 0;
-@@ -5724,7 +5818,7 @@
+@@ -5724,7 +5821,7 @@
  		res = 0;
  		break;
  	case RES_OUTOFMEMORY:
@@ -1556,7 +1555,7 @@
  		break;
  	}
  
-@@ -6168,31 +6262,37 @@
+@@ -6168,31 +6265,37 @@
  	return 0;
  }
  
@@ -1604,7 +1603,7 @@
  			mem_iter = ao2_iterator_init(q->members, 0);
  			while ((m = ao2_iterator_next(&mem_iter))) {
  				/* Count the agents who are logged in and presently answering calls */
-@@ -6202,7 +6302,7 @@
+@@ -6202,7 +6305,7 @@
  				ao2_ref(m, -1);
  			}
  			ao2_iterator_destroy(&mem_iter);
@@ -1613,7 +1612,7 @@
  			mem_iter = ao2_iterator_init(q->members, 0);
  			while ((m = ao2_iterator_next(&mem_iter))) {
  				/* Count the agents who are logged in and presently answering calls */
-@@ -6212,7 +6312,7 @@
+@@ -6212,7 +6315,7 @@
  				ao2_ref(m, -1);
  			}
  			ao2_iterator_destroy(&mem_iter);
@@ -1622,7 +1621,7 @@
  			time_t now;
  			time(&now);
  			mem_iter = ao2_iterator_init(q->members, 0);
-@@ -6225,22 +6325,104 @@
+@@ -6225,22 +6328,104 @@
  				ao2_ref(m, -1);
  			}
  			ao2_iterator_destroy(&mem_iter);
@@ -1733,7 +1732,7 @@
  */
  static int queue_function_qac_dep(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
  {
-@@ -6446,7 +6628,8 @@
+@@ -6446,7 +6631,8 @@
  
  static struct ast_custom_function queuemembercount_function = {
  	.name = "QUEUE_MEMBER",
@@ -1743,7 +1742,7 @@
  };
  
  static struct ast_custom_function queuemembercount_dep = {
-@@ -6529,8 +6712,9 @@
+@@ -6529,8 +6715,9 @@
  {
  	const char *general_val = NULL;
  	queue_persistent_members = 0;
@@ -1754,7 +1753,7 @@
  	autofill_default = 0;
  	if ((general_val = ast_variable_retrieve(cfg, "general", "autofill")))
  		autofill_default = ast_true(general_val);
-@@ -6545,6 +6729,12 @@
+@@ -6545,6 +6732,12 @@
  	shared_lastcall = 0;
  	if ((general_val = ast_variable_retrieve(cfg, "general", "shared_lastcall")))
  		shared_lastcall = ast_true(general_val);
@@ -1767,7 +1766,7 @@
  }
  
  /*! \brief reload information pertaining to a single member
-@@ -6810,7 +7000,7 @@
+@@ -6810,7 +7003,7 @@
  
  	/* We've made it here, so it looks like we're doing operations on all queues. */
  	ao2_lock(queues);
@@ -1776,7 +1775,7 @@
  	/* Mark all queues as dead for the moment if we're reloading queues.
  	 * For clarity, we could just be reloading members, in which case we don't want to mess
  	 * with the other queue parameters at all*/
-@@ -6837,12 +7027,12 @@
+@@ -6837,12 +7030,12 @@
  	ao2_unlock(queues);
  	return 0;
  }
@@ -1791,7 +1790,7 @@
   * clear_queue function. If no queuename is passed in, then
   * all queues will have their statistics reset.
   *
-@@ -6992,7 +7182,11 @@
+@@ -6992,7 +7185,11 @@
  			while ((mem = ao2_iterator_next(&mem_iter))) {
  				ast_str_set(&out, 0, "      %s", mem->membername);
  				if (strcasecmp(mem->membername, mem->interface)) {
@@ -1804,7 +1803,7 @@
  				}
  				if (mem->penalty)
  					ast_str_append(&out, 0, " with penalty %d", mem->penalty);
-@@ -7260,6 +7454,7 @@
+@@ -7260,6 +7457,7 @@
  						"Queue: %s\r\n"
  						"Name: %s\r\n"
  						"Location: %s\r\n"
@@ -1812,7 +1811,7 @@
  						"Membership: %s\r\n"
  						"Penalty: %d\r\n"
  						"CallsTaken: %d\r\n"
-@@ -7268,7 +7463,7 @@
+@@ -7268,7 +7466,7 @@
  						"Paused: %d\r\n"
  						"%s"
  						"\r\n",
@@ -1821,7 +1820,7 @@
  						mem->penalty, mem->calls, (int)mem->lastcall, mem->status, mem->paused, idText);
  				}
  				ao2_ref(mem, -1);
-@@ -7344,7 +7539,11 @@
+@@ -7344,7 +7542,11 @@
  
  	switch (add_to_queue(queuename, interface, membername, penalty, paused, queue_persistent_members, state_interface)) {
  	case RES_OKAY:
@@ -1834,7 +1833,7 @@
  		astman_send_ack(s, m, "Added interface to queue");
  		break;
  	case RES_EXISTS:
-@@ -7364,6 +7563,7 @@
+@@ -7364,6 +7566,7 @@
  static int manager_remove_queue_member(struct mansession *s, const struct message *m)
  {
  	const char *queuename, *interface;
@@ -1842,7 +1841,7 @@
  
  	queuename = astman_get_header(m, "Queue");
  	interface = astman_get_header(m, "Interface");
-@@ -7373,9 +7573,17 @@
+@@ -7373,9 +7576,17 @@
  		return 0;
  	}
  
@@ -1861,7 +1860,7 @@
  		astman_send_ack(s, m, "Removed interface from queue");
  		break;
  	case RES_EXISTS:
-@@ -7597,7 +7805,11 @@
+@@ -7597,7 +7808,11 @@
  
  	switch (add_to_queue(queuename, interface, membername, penalty, 0, queue_persistent_members, state_interface)) {
  	case RES_OKAY:
@@ -1874,7 +1873,7 @@
  		ast_cli(a->fd, "Added interface '%s' to queue '%s'\n", interface, queuename);
  		return CLI_SUCCESS;
  	case RES_EXISTS:
-@@ -7665,11 +7877,12 @@
+@@ -7665,11 +7880,12 @@
  static char *handle_queue_remove_member(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
  {
  	const char *queuename, *interface;
@@ -1888,7 +1887,7 @@
  			"Usage: queue remove member <channel> from <queue>\n"
  			"       Remove a specific channel from a queue.\n";
  		return NULL;
-@@ -7686,10 +7899,18 @@
+@@ -7686,10 +7902,18 @@
  	queuename = a->argv[5];
  	interface = a->argv[3];
  
@@ -1909,7 +1908,7 @@
  		return CLI_SUCCESS;
  	case RES_EXISTS:
  		ast_cli(a->fd, "Unable to remove interface '%s' from queue '%s': Not there\n", interface, queuename);
-@@ -8412,6 +8633,26 @@
+@@ -8412,6 +8636,26 @@
  	return 0;
  }
  
@@ -1938,7 +1937,7 @@
  		.unload = unload_module,
 Index: addons/chan_ooh323.c
 ===================================================================
---- addons/chan_ooh323.c	(revision 335128)
+--- addons/chan_ooh323.c	(revision 336934)
 +++ addons/chan_ooh323.c	(working copy)
 @@ -25,6 +25,42 @@
  #include "chan_ooh323.h"
@@ -3063,7 +3062,7 @@
  
 Index: Makefile
 ===================================================================
---- Makefile	(revision 335128)
+--- Makefile	(revision 336934)
 +++ Makefile	(working copy)
 @@ -127,7 +127,7 @@
  # Asterisk.conf is located in ASTETCDIR or by using the -C flag
@@ -3076,7 +3075,7 @@
  # If you use Apache, you may determine by a grep 'DocumentRoot' of your httpd.conf file
 Index: funcs/func_channel.c
 ===================================================================
---- funcs/func_channel.c	(revision 335128)
+--- funcs/func_channel.c	(revision 336934)
 +++ funcs/func_channel.c	(working copy)
 @@ -89,6 +89,9 @@
  					<enum name="callgroup">
@@ -3114,7 +3113,7 @@
  	} else if (!strcasecmp(data, "rxgain")) {
 Index: include/asterisk/res_fax.h
 ===================================================================
---- include/asterisk/res_fax.h	(revision 335128)
+--- include/asterisk/res_fax.h	(revision 336934)
 +++ include/asterisk/res_fax.h	(working copy)
 @@ -42,6 +42,8 @@
  	AST_FAX_TECH_T38       = (1 << 3),
@@ -3148,7 +3147,7 @@
  	/*! the type of fax session supported with this ast_fax_tech structure */
 Index: include/asterisk/dsp.h
 ===================================================================
---- include/asterisk/dsp.h	(revision 335128)
+--- include/asterisk/dsp.h	(revision 336934)
 +++ include/asterisk/dsp.h	(working copy)
 @@ -43,9 +43,11 @@
  #define DSP_FEATURE_CALL_PROGRESS	(DSP_PROGRESS_TALK | DSP_PROGRESS_RINGING | DSP_PROGRESS_BUSY | DSP_PROGRESS_CONGESTION)
@@ -3167,20 +3166,37 @@
  #define DSP_TONE_STATE_RINGING  1
 Index: main/channel.c
 ===================================================================
---- main/channel.c	(revision 335128)
+--- main/channel.c	(revision 336934)
 +++ main/channel.c	(working copy)
-@@ -4889,6 +4889,10 @@
- 			apply_plc(chan, fr);
+@@ -4890,10 +4890,25 @@
  		}
  
-+		if ((!(fr->subclass.codec & chan->nativeformats)) && (chan->writeformat != fr->subclass.codec)) {
-+			ast_set_write_format(chan, fr->subclass.codec);
-+		}
-+
  		/* If the frame is in the raw write format, then it's easy... just use the frame - otherwise we will have to translate */
- 		if (fr->subclass.codec == chan->rawwriteformat)
+-		if (fr->subclass.codec == chan->rawwriteformat)
++		if (fr->subclass.codec == chan->rawwriteformat) {
  			f = fr;
-@@ -7189,6 +7193,8 @@
+-		else
++		} else {
++			/* XXX Something is not right we are not compatible with this frame bad things can happen
++			 * problems range from no/one-way audio to unexplained line hangups as a last resort try adjust the format
++			 * ideally we do not want to do this and this indicates a deeper problem for now we log these events to
++			 * eliminate user impact and help identify the problem areas
++			 * JIRA issues related to this :-
++			 * ASTERISK-14384, ASTERISK-17502, ASTERISK-17541, ASTERISK-18063, ASTERISK-18325, ASTERISK-18422*/
++			if ((!(fr->subclass.codec & chan->nativeformats)) && (chan->writeformat != fr->subclass.codec)) {
++				char nf[512];
++				ast_log(LOG_WARNING, "Codec mismatch on channel %s setting write format to %s from %s native formats %s\n",
++					chan->name, ast_getformatname(fr->subclass.codec), ast_getformatname(chan->writeformat),
++					ast_getformatname_multiple(nf, sizeof(nf), chan->nativeformats & AST_FORMAT_AUDIO_MASK));
++				ast_set_write_format(chan, fr->subclass.codec);
++			}
++
+ 			f = (chan->writetrans) ? ast_translate(chan->writetrans, fr, 0) : fr;
++		}
+ 
+ 		if (!f) {
+ 			res = 0;
+@@ -7189,6 +7204,8 @@
  	long time_left_ms=0;
  	char caller_warning = 0;
  	char callee_warning = 0;
@@ -3189,7 +3205,7 @@
  
  	*fo = NULL;
  
-@@ -7262,6 +7268,17 @@
+@@ -7262,6 +7279,17 @@
  	ast_indicate(c0, AST_CONTROL_SRCUPDATE);
  	ast_indicate(c1, AST_CONTROL_SRCUPDATE);
  
@@ -3209,7 +3225,7 @@
  		int to;
 Index: main/dsp.c
 ===================================================================
---- main/dsp.c	(revision 335128)
+--- main/dsp.c	(revision 336934)
 +++ main/dsp.c	(working copy)
 @@ -254,6 +254,20 @@
  
@@ -3414,7 +3430,7 @@
  
 Index: main/frame.c
 ===================================================================
---- main/frame.c	(revision 335128)
+--- main/frame.c	(revision 336934)
 +++ main/frame.c	(working copy)
 @@ -413,7 +413,7 @@
  		out->samples = fr->samples;
@@ -3436,7 +3452,7 @@
  	out->seqno = f->seqno;
 Index: configs/chan_ooh323.conf.sample
 ===================================================================
---- configs/chan_ooh323.conf.sample	(revision 335128)
+--- configs/chan_ooh323.conf.sample	(revision 336934)
 +++ configs/chan_ooh323.conf.sample	(working copy)
 @@ -122,6 +122,18 @@
  ;
@@ -3459,7 +3475,7 @@
  ; ------------------                     -------------------
 Index: configs/queues.conf.sample
 ===================================================================
---- configs/queues.conf.sample	(revision 335128)
+--- configs/queues.conf.sample	(revision 336934)
 +++ configs/queues.conf.sample	(working copy)
 @@ -61,6 +61,16 @@
  ;
@@ -3499,9 +3515,44 @@
  ; ringinuse = no
  ;
  ; If you wish to have a delay before the member is connected to the caller (or
+Index: res/res_srtp.c
+===================================================================
+--- res/res_srtp.c	(revision 336934)
++++ res/res_srtp.c	(working copy)
+@@ -54,6 +54,7 @@
+ 	srtp_t session;
+ 	const struct ast_srtp_cb *cb;
+ 	void *data;
++	int warned;
+ 	unsigned char buf[8192 + AST_FRIENDLY_OFFSET];
+ };
+ 
+@@ -179,6 +180,8 @@
+ 		ast_free(srtp);
+ 		return NULL;
+ 	}
++	
++	srtp->warned = 1;
+ 
+ 	return srtp;
+ }
+@@ -382,7 +385,12 @@
+ 	}
+ 
+ 	if (res != err_status_ok && res != err_status_replay_fail ) {
+-		ast_log(LOG_WARNING, "SRTP unprotect: %s\n", srtp_errstr(res));
++		if ((srtp->warned >= 10) && !((srtp->warned - 10) % 100)) {
++			ast_log(LOG_WARNING, "SRTP unprotect: %s %d\n", srtp_errstr(res), srtp->warned);
++			srtp->warned = 11;
++		} else {
++			srtp->warned++;
++		}
+ 		errno = EAGAIN;
+ 		return -1;
+ 	}
 Index: res/res_fax.c
 ===================================================================
---- res/res_fax.c	(revision 335128)
+--- res/res_fax.c	(revision 336934)
 +++ res/res_fax.c	(working copy)
 @@ -5,7 +5,24 @@
   *
@@ -4996,7 +5047,7 @@
  	return res;
 Index: res/res_fax_spandsp.c
 ===================================================================
---- res/res_fax_spandsp.c	(revision 335128)
+--- res/res_fax_spandsp.c	(revision 336934)
 +++ res/res_fax_spandsp.c	(working copy)
 @@ -5,6 +5,22 @@
   *
@@ -5465,7 +5516,7 @@
  	ast_cli(fd, "\n\n");
 Index: contrib/scripts/safe_asterisk
 ===================================================================
---- contrib/scripts/safe_asterisk	(revision 335128)
+--- contrib/scripts/safe_asterisk	(revision 336934)
 +++ contrib/scripts/safe_asterisk	(working copy)
 @@ -2,14 +2,14 @@
  # vim:textwidth=80:tabstop=4:shiftwidth=4:smartindent:autoindent

Modified: team/irroot/patches/distrotech-1.8.patch
URL: http://svnview.digium.com/svn/asterisk/team/irroot/patches/distrotech-1.8.patch?view=diff&rev=337894&r1=337893&r2=337894
==============================================================================
--- team/irroot/patches/distrotech-1.8.patch (original)
+++ team/irroot/patches/distrotech-1.8.patch Fri Sep 23 06:20:27 2011
@@ -1,8 +1,8 @@
 Index: channels/chan_sip.c
 ===================================================================
---- channels/chan_sip.c	(.../branches/1.8)	(revision 336225)
-+++ channels/chan_sip.c	(.../team/irroot/distrotech-customers-1.8)	(revision 336225)
-@@ -4316,6 +4316,9 @@
+--- channels/chan_sip.c	(.../branches/1.8)	(revision 337855)
++++ channels/chan_sip.c	(.../team/irroot/distrotech-customers-1.8)	(revision 337855)
+@@ -4317,6 +4317,9 @@
  			case T38_ENABLED:
  				state = T38_STATE_NEGOTIATED;
  				break;
@@ -12,7 +12,7 @@
  			default:
  				state = T38_STATE_UNKNOWN;
  			}
-@@ -4980,6 +4983,7 @@
+@@ -4981,6 +4984,7 @@
  		parameters.request_response = AST_T38_NEGOTIATED;
  		ast_udptl_set_tag(p->udptl, "SIP/%s", p->username);
  		break;
@@ -20,7 +20,7 @@
  	case T38_DISABLED:
  		if (old == T38_ENABLED) {
  			parameters.request_response = AST_T38_TERMINATED;
-@@ -5449,17 +5453,23 @@
+@@ -5450,17 +5454,23 @@
  
  		if (p->rtp && !p->srtp && setup_srtp(&p->srtp) < 0) {
  			ast_log(LOG_WARNING, "SRTP audio setup failed\n");
@@ -47,7 +47,7 @@
  		}
  	}
  
-@@ -6558,11 +6568,11 @@
+@@ -6559,11 +6569,11 @@
  	case AST_T38_REQUEST_NEGOTIATE:         /* Request T38 */
  		/* Negotiation can not take place without a valid max_ifp value. */
  		if (!parameters->max_ifp) {
@@ -60,7 +60,7 @@
  			break;
  		} else if (p->t38.state == T38_PEER_REINVITE) {
  			AST_SCHED_DEL_UNREF(sched, p->t38id, dialog_unref(p, "when you delete the t38id sched, you should dec the refcount for the stored dialog ptr"));
-@@ -6600,7 +6610,7 @@
+@@ -6601,7 +6611,7 @@
  	case AST_T38_REQUEST_TERMINATE:         /* Shutdown T38 */
  		if (p->t38.state == T38_PEER_REINVITE) {
  			AST_SCHED_DEL_UNREF(sched, p->t38id, dialog_unref(p, "when you delete the t38id sched, you should dec the refcount for the stored dialog ptr"));
@@ -69,7 +69,7 @@
  			transmit_response_reliable(p, "488 Not acceptable here", &p->initreq);
  		} else if (p->t38.state == T38_ENABLED)
  			transmit_reinvite_with_sdp(p, FALSE, FALSE);
-@@ -8850,27 +8860,43 @@
+@@ -8851,27 +8861,43 @@
  
  	if (secure_audio && !(p->srtp && (ast_test_flag(p->srtp, SRTP_CRYPTO_OFFER_OK)))) {
  		ast_log(LOG_WARNING, "Can't provide secure audio requested in SDP offer\n");
@@ -118,7 +118,7 @@
  	}
  
  	if (udptlportno == -1) {
-@@ -9051,7 +9077,7 @@
+@@ -9052,7 +9078,7 @@
  		}
  	}
  
@@ -127,7 +127,7 @@
  		ast_debug(3, "Have T.38 but no audio, accepting offer anyway\n");
  		return 0;
          }
-@@ -10870,14 +10896,25 @@
+@@ -10876,14 +10902,25 @@
  	}
  }
  
@@ -155,7 +155,7 @@
  			*a_crypto = sdp_crypto_attrib(srtp->crypto);
  		}
  
-@@ -11037,7 +11074,7 @@
+@@ -11043,7 +11080,7 @@
  		/* Ok, we need video. Let's add what we need for video and set codecs.
  		   Video is handled differently than audio since we can not transcode. */
  		if (needvideo) {
@@ -164,7 +164,7 @@
  			ast_str_append(&m_video, 0, "m=video %d RTP/%s", ast_sockaddr_port(&vdest),
  				v_a_crypto ? "SAVP" : "AVP");
  
-@@ -11054,7 +11091,7 @@
+@@ -11060,7 +11097,7 @@
  		if (needtext) {
  			if (sipdebug_text)
  				ast_verbose("Lets set up the text sdp\n");
@@ -173,7 +173,7 @@
  			ast_str_append(&m_text, 0, "m=text %d RTP/%s", ast_sockaddr_port(&tdest),
  				t_a_crypto ? "SAVP" : "AVP");
  			if (debug) {  /* XXX should I use tdest below ? */
-@@ -11067,7 +11104,7 @@
+@@ -11073,7 +11110,7 @@
  		/* We break with the "recommendation" and send our IP, in order that our
  		   peer doesn't have to ast_gethostbyname() us */
  
@@ -182,7 +182,7 @@
  		ast_str_append(&m_audio, 0, "m=audio %d RTP/%s", ast_sockaddr_port(&dest),
  			a_crypto ? "SAVP" : "AVP");
  
-@@ -14312,24 +14349,21 @@
+@@ -14318,24 +14355,21 @@
  				} else {
  
  					/* We have a successful registration attempt with proper authentication,
@@ -208,7 +208,7 @@
  						res = 0;
  						break;
  					case PARSE_REGISTER_UPDATE:
-@@ -14337,8 +14371,6 @@
+@@ -14343,8 +14377,6 @@
  						update_peer(peer, p->expiry);
  						/* Say OK and ask subsystem to retransmit msg counter */
  						transmit_response_with_date(p, "200 OK", req);
@@ -217,7 +217,7 @@
  						res = 0;
  						break;
  					}
-@@ -14363,19 +14395,16 @@
+@@ -14369,19 +14401,16 @@
  			case PARSE_REGISTER_DENIED:
  				ast_log(LOG_WARNING, "Registration denied because of contact ACL\n");
  				transmit_response_with_date(p, "403 Forbidden (ACL)", req);
@@ -237,7 +237,7 @@
  				res = 0;
  				break;
  			case PARSE_REGISTER_UPDATE:
-@@ -14383,7 +14412,6 @@
+@@ -14389,7 +14418,6 @@
  				/* Say OK and ask subsystem to retransmit msg counter */
  				transmit_response_with_date(p, "200 OK", req);
  				manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "ChannelType: SIP\r\nPeer: SIP/%s\r\nPeerStatus: Registered\r\nAddress: %s\r\n", peer->name, ast_sockaddr_stringify(addr));
@@ -245,7 +245,7 @@
  				res = 0;
  				break;
  			}
-@@ -14399,6 +14427,7 @@
+@@ -14405,6 +14433,7 @@
  		sched_yield();
  	}
  	if (!res) {
@@ -253,7 +253,7 @@
  		ast_devstate_changed(AST_DEVICE_UNKNOWN, "SIP/%s", peer->name);
  	}
  	if (res < 0) {
-@@ -16897,7 +16926,6 @@
+@@ -16903,7 +16932,6 @@
  		ast_cli(fd, "  MOH Suggest  : %s\n", peer->mohsuggest);
  		ast_cli(fd, "  Mailbox      : %s\n", mailbox_str->str);
  		ast_cli(fd, "  VM Extension : %s\n", peer->vmexten);
@@ -261,7 +261,7 @@
  		ast_cli(fd, "  Call limit   : %d\n", peer->call_limit);
  		ast_cli(fd, "  Max forwards : %d\n", peer->maxforwards);
  		if (peer->busy_level)
-@@ -17012,7 +17040,6 @@
+@@ -17018,7 +17046,6 @@
  		astman_append(s, "VoiceMailbox: %s\r\n", mailbox_str->str);
  		astman_append(s, "TransferMode: %s\r\n", transfermode2str(peer->allowtransfer));
  		astman_append(s, "Maxforwards: %d\r\n", peer->maxforwards);
@@ -269,7 +269,7 @@
  		astman_append(s, "Maxforwards: %d\r\n", peer->maxforwards);
  		astman_append(s, "Call-limit: %d\r\n", peer->call_limit);
  		astman_append(s, "Busy-level: %d\r\n", peer->busy_level);
-@@ -18980,7 +19007,7 @@
+@@ -18986,7 +19013,7 @@
  	} else  if (!strcasecmp(data, "peername")) {
  		ast_copy_string(buf, p->peername, len);
  	} else if (!strcasecmp(data, "t38passthrough")) {
@@ -278,7 +278,7 @@
  			ast_copy_string(buf, "0", len);
  		} else { /* T38 is offered or enabled in this call */
  			ast_copy_string(buf, "1", len);
-@@ -19746,7 +19773,7 @@
+@@ -19756,7 +19783,7 @@
  	case 606: /* Not Acceptable */
  		xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
  		if (p->udptl && p->t38.state == T38_LOCAL_REINVITE) {
@@ -287,7 +287,7 @@
  			/* Try to reset RTP timers */
  			//ast_rtp_set_rtptimers_onhold(p->rtp);
  
-@@ -21554,7 +21581,7 @@
+@@ -21564,7 +21591,7 @@
  	 * want to abort the negotiation process
  	 */
  	if (p->t38id != -1) {
@@ -296,7 +296,7 @@
  		transmit_response_reliable(p, "488 Not acceptable here", &p->initreq);
  		p->t38id = -1;
  		dialog_unref(p, "unref the dialog ptr from sip_t38_abort, because it held a dialog ptr");
-@@ -22429,9 +22456,10 @@
+@@ -22439,9 +22466,10 @@
  			} else if (p->t38.state == T38_ENABLED) {
  				ast_set_flag(&p->flags[1], SIP_PAGE2_DIALOG_ESTABLISHED);
  				transmit_response_with_t38_sdp(p, "200 OK", req, (reinvite ? XMIT_RELIABLE : (req->ignore ?  XMIT_UNRELIABLE : XMIT_CRITICAL)));
@@ -309,7 +309,7 @@
  					ast_log(LOG_WARNING, "Target does not support required crypto\n");
  					transmit_response_reliable(p, "488 Not Acceptable Here (crypto)", req);
  				} else {
-@@ -24986,25 +25014,33 @@
+@@ -24997,25 +25025,33 @@
  	return in_cache;
  }
  
@@ -348,16 +348,16 @@
  		ast_app_inboxcount(mailbox_str->str, &newmsgs, &oldmsgs);
  	}
  	ao2_lock(peer);
-@@ -25029,7 +25065,7 @@
- 			dialog_unlink_all(p, TRUE, TRUE);
+@@ -25041,7 +25077,7 @@
  			dialog_unref(p, "unref dialog p just created via sip_alloc");
  			/* sip_destroy(p); */
+ 			ao2_unlock(peer);
 -			return 0;
 +			return -1;
  		}
  		/* Recalculate our side, and recalculate Call ID */
  		ast_sip_ouraddrfor(&p->sa, &p->ourip, p);
-@@ -26503,6 +26539,11 @@
+@@ -26515,6 +26551,11 @@
  		int duplicate = 0;
  		/* remove leading/trailing whitespace from mailbox string */
  		mbox = ast_strip(mbox);
@@ -369,7 +369,7 @@
  		strsep(&context, "@");
  
  		if (ast_strlen_zero(mbox)) {
-@@ -26596,7 +26637,6 @@
+@@ -26608,7 +26649,6 @@
  
  	/* Note that our peer HAS had its reference count increased */
  	if (firstpass) {
@@ -377,7 +377,7 @@
  		oldha = peer->ha;
  		peer->ha = NULL;
  		olddirectmediaha = peer->directmediaha;
-@@ -26971,7 +27011,15 @@
+@@ -26983,7 +27023,15 @@
  			} else if (!strcasecmp(v->name, "use_q850_reason")) {
  				ast_set2_flag(&peer->flags[1], ast_true(v->value), SIP_PAGE2_Q850_REASON);
  			} else if (!strcasecmp(v->name, "encryption")) {
@@ -394,7 +394,7 @@
  			} else if (!strcasecmp(v->name, "snom_aoc_enabled")) {
  				ast_set2_flag(&peer->flags[2], ast_true(v->value), SIP_PAGE3_SNOM_AOC);
  			}
-@@ -28879,7 +28927,7 @@
+@@ -28891,7 +28939,7 @@
  		return FALSE;
  	}
  
@@ -405,8 +405,8 @@
  
 Index: channels/sip/include/sip.h
 ===================================================================
---- channels/sip/include/sip.h	(.../branches/1.8)	(revision 336225)
-+++ channels/sip/include/sip.h	(.../team/irroot/distrotech-customers-1.8)	(revision 336225)
+--- channels/sip/include/sip.h	(.../branches/1.8)	(revision 337855)
++++ channels/sip/include/sip.h	(.../team/irroot/distrotech-customers-1.8)	(revision 337855)
 @@ -352,9 +352,11 @@
  
  
@@ -440,8 +440,8 @@
  
 Index: channels/sip/include/sdp_crypto.h
 ===================================================================
---- channels/sip/include/sdp_crypto.h	(.../branches/1.8)	(revision 336225)
-+++ channels/sip/include/sdp_crypto.h	(.../team/irroot/distrotech-customers-1.8)	(revision 336225)
+--- channels/sip/include/sdp_crypto.h	(.../branches/1.8)	(revision 337855)
++++ channels/sip/include/sdp_crypto.h	(.../team/irroot/distrotech-customers-1.8)	(revision 337855)
 @@ -31,6 +31,7 @@
  #include <asterisk/rtp_engine.h>
  
@@ -475,8 +475,8 @@
  /*! \brief Return the a_crypto value of the sdp_crypto struct
 Index: channels/sip/include/srtp.h
 ===================================================================
---- channels/sip/include/srtp.h	(.../branches/1.8)	(revision 336225)
-+++ channels/sip/include/srtp.h	(.../team/irroot/distrotech-customers-1.8)	(revision 336225)
+--- channels/sip/include/srtp.h	(.../branches/1.8)	(revision 337855)
++++ channels/sip/include/srtp.h	(.../team/irroot/distrotech-customers-1.8)	(revision 337855)
 @@ -34,6 +34,8 @@
  #define SRTP_ENCR_OPTIONAL	(1 << 1)	/* SRTP encryption optional */
  #define SRTP_CRYPTO_ENABLE	(1 << 2)
@@ -488,8 +488,8 @@
  struct sip_srtp {
 Index: channels/sip/sdp_crypto.c
 ===================================================================
---- channels/sip/sdp_crypto.c	(.../branches/1.8)	(revision 336225)
-+++ channels/sip/sdp_crypto.c	(.../team/irroot/distrotech-customers-1.8)	(revision 336225)
+--- channels/sip/sdp_crypto.c	(.../branches/1.8)	(revision 337855)
++++ channels/sip/sdp_crypto.c	(.../team/irroot/distrotech-customers-1.8)	(revision 337855)
 @@ -32,6 +32,7 @@
  #include "asterisk/options.h"
  #include "asterisk/utils.h"
@@ -540,8 +540,8 @@
  
 Index: channels/chan_local.c
 ===================================================================
---- channels/chan_local.c	(.../branches/1.8)	(revision 336225)
-+++ channels/chan_local.c	(.../team/irroot/distrotech-customers-1.8)	(revision 336225)
+--- channels/chan_local.c	(.../branches/1.8)	(revision 337855)
++++ channels/chan_local.c	(.../team/irroot/distrotech-customers-1.8)	(revision 337855)
 @@ -588,6 +588,7 @@
  static int local_write(struct ast_channel *ast, struct ast_frame *f)
  {
@@ -573,9 +573,9 @@
  	if (!ast_test_flag(p, LOCAL_ALREADY_MASQED)) {
 Index: configure.ac
 ===================================================================
---- configure.ac	(.../branches/1.8)	(revision 336225)
-+++ configure.ac	(.../team/irroot/distrotech-customers-1.8)	(revision 336225)
-@@ -1698,7 +1698,7 @@
+--- configure.ac	(.../branches/1.8)	(revision 337855)
++++ configure.ac	(.../team/irroot/distrotech-customers-1.8)	(revision 337855)
+@@ -1699,7 +1699,7 @@
     AST_EXT_LIB_CHECK([SUPPSERV], [suppserv], [encodeFac], [mISDNuser/suppserv.h])
     AST_C_DEFINE_CHECK([MISDN_FAC_RESULT], [Fac_RESULT], [mISDNuser/suppserv.h])
     AST_C_DEFINE_CHECK([MISDN_FAC_ERROR], [Fac_ERROR], [mISDNuser/suppserv.h])
@@ -586,9 +586,9 @@
  
 Index: apps/app_queue.c
 ===================================================================
---- apps/app_queue.c	(.../branches/1.8)	(revision 336225)
-+++ apps/app_queue.c	(.../team/irroot/distrotech-customers-1.8)	(revision 336225)
-@@ -522,11 +522,25 @@
+--- apps/app_queue.c	(.../branches/1.8)	(revision 337855)
++++ apps/app_queue.c	(.../team/irroot/distrotech-customers-1.8)	(revision 337855)
+@@ -524,11 +524,25 @@
  					<enum name="count">
  						<para>Returns the total number of members for the specified queue.</para>
  					</enum>
@@ -615,7 +615,7 @@
  		</description>
  		<see-also>
  			<ref type="application">Queue</ref>
-@@ -659,6 +673,7 @@
+@@ -661,6 +675,7 @@
  		</syntax>
  		<description>
  			<para>Gets or sets queue members penalty.</para>
@@ -623,7 +623,7 @@
  		</description>
  		<see-also>
  			<ref type="application">Queue</ref>
-@@ -934,6 +949,12 @@
+@@ -936,6 +951,12 @@
  /*! \brief queues.conf [general] option */
  static int update_cdr = 0;
  
@@ -636,7 +636,7 @@
  enum queue_result {
  	QUEUE_UNKNOWN = 0,
  	QUEUE_TIMEOUT = 1,
-@@ -1043,6 +1064,7 @@
+@@ -1045,6 +1066,7 @@
  	unsigned int dead:1;                 /*!< Used to detect members deleted in realtime */
  	unsigned int delme:1;                /*!< Flag to delete entry on reload */
  	char rt_uniqueid[80];                /*!< Unique id of realtime member entry */
@@ -644,7 +644,7 @@
  };
  
  enum empty_conditions {
-@@ -1160,6 +1182,7 @@
+@@ -1162,6 +1184,7 @@
  	int timeout;                        /*!< How long to wait for an answer */
  	int weight;                         /*!< Respective weight */
  	int autopause;                      /*!< Auto pause queue members if they fail to answer */
@@ -652,7 +652,7 @@
  	int timeoutpriority;                /*!< Do we allow a fraction of the timeout to occur for a ring? */
  
  	/* Queue strategy things */
-@@ -1190,9 +1213,12 @@
+@@ -1192,9 +1215,12 @@
  static struct ao2_container *queues;
  
  static void update_realtime_members(struct call_queue *q);
@@ -666,7 +666,7 @@
  /*! \brief sets the QUEUESTATUS channel variable */
  static void set_queue_result(struct ast_channel *chan, enum queue_result res)
  {
-@@ -1436,13 +1462,14 @@
+@@ -1438,13 +1464,14 @@
  		"Queue: %s\r\n"
  		"Location: %s\r\n"
  		"MemberName: %s\r\n"
@@ -682,7 +682,7 @@
  		m->penalty, m->calls, (int)m->lastcall, m->status, m->paused
  	);
  
-@@ -1552,7 +1579,7 @@
+@@ -1554,7 +1581,7 @@
  	return state;
  }
  
@@ -691,7 +691,7 @@
  {
  	struct ao2_iterator miter, qiter;
  	struct member *m;
-@@ -1698,6 +1725,7 @@
+@@ -1700,6 +1727,7 @@
  	q->numperiodicannounce = 0;
  	q->autopause = QUEUE_AUTOPAUSE_OFF;
  	q->timeoutpriority = TIMEOUT_PRIORITY_APP;
@@ -699,7 +699,7 @@
  	if (!q->members) {
  		if (q->strategy == QUEUE_STRATEGY_LINEAR || q->strategy == QUEUE_STRATEGY_RRORDERED)
  			/* linear strategy depends on order, so we have to place all members in a single bucket */
-@@ -2008,6 +2036,8 @@
+@@ -2010,6 +2038,8 @@
  			q->montype = 1;
  	} else if (!strcasecmp(param, "autopause")) {
  		q->autopause = autopause2int(val);
@@ -708,7 +708,7 @@
  	} else if (!strcasecmp(param, "maxlen")) {
  		q->maxlen = atoi(val);
  		if (q->maxlen < 0)
-@@ -2077,16 +2107,24 @@
+@@ -2079,16 +2109,24 @@
   * \brief Find rt member record to update otherwise create one.
   *
   * Search for member in queue, if found update penalty/paused state,
@@ -735,7 +735,7 @@
  	if (ast_strlen_zero(rt_uniqueid)) {
  		ast_log(LOG_WARNING, "Realtime field uniqueid is empty for member %s\n", S_OR(membername, "NULL"));
  		return;
-@@ -2094,8 +2132,11 @@
+@@ -2096,8 +2134,11 @@
  
  	if (penalty_str) {
  		penalty = atoi(penalty_str);
@@ -748,7 +748,7 @@
  	}
  
  	if (paused_str) {
-@@ -2104,33 +2145,45 @@
+@@ -2106,33 +2147,45 @@
  			paused = 0;
  	}
  
@@ -815,7 +815,7 @@
  			ao2_link(q->members, m);
  			ao2_ref(m, -1);
  			m = NULL;
-@@ -2304,19 +2357,18 @@
+@@ -2306,19 +2359,18 @@
  	ao2_iterator_destroy(&mem_iter);
  
  	while ((interface = ast_category_browse(member_config, interface))) {
@@ -841,7 +841,7 @@
  			ao2_unlink(q->members, m);
  			q->membercount--;
  		}
-@@ -2425,19 +2477,18 @@
+@@ -2427,19 +2479,18 @@
  	ao2_iterator_destroy(&mem_iter);
  
  	while ((interface = ast_category_browse(member_config, interface))) {
@@ -867,7 +867,7 @@
  			ao2_unlink(q->members, m);
  			q->membercount--;
  		}
-@@ -2874,16 +2925,24 @@
+@@ -2876,16 +2927,24 @@
  	mem_iter = ao2_iterator_init(q->members, 0);
  	while ((mem = ao2_iterator_next(&mem_iter))) {
  		switch (mem->status) {
@@ -901,7 +901,7 @@
  		}
  		ao2_ref(mem, -1);
  
-@@ -3009,38 +3068,54 @@
+@@ -3011,38 +3070,54 @@
  	char tech[256];
  	char *location;
  	const char *macrocontext, *macroexten;
@@ -972,7 +972,7 @@
  		tmp->stillgoing = 0;
  		(*busies)++;
  		return 0;
-@@ -3055,8 +3130,9 @@
+@@ -3057,8 +3132,9 @@
  	/* Request the peer */
  	tmp->chan = ast_request(tech, qe->chan->nativeformats, qe->chan, location, &status);
  	if (!tmp->chan) {			/* If we can't, just go on to the next call */
@@ -983,7 +983,7 @@
  		tmp->stillgoing = 0;	
  
  		ao2_lock(qe->parent);
-@@ -3395,6 +3471,18 @@
+@@ -3397,6 +3473,18 @@
  	}
  	ast_queue_log(qe->parent->name, qe->chan->uniqueid, membername, "RINGNOANSWER", "%d", rnatime);
  	if (qe->parent->autopause != QUEUE_AUTOPAUSE_OFF && pause) {
@@ -1002,7 +1002,7 @@
  		if (qe->parent->autopause == QUEUE_AUTOPAUSE_ON) {
  			if (!set_member_paused(qe->parent->name, interface, "Auto-Pause", 1)) {

[... 1729 lines stripped ...]



More information about the asterisk-commits mailing list