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

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sat Sep 24 13:53:23 CDT 2011


Author: irroot
Date: Sat Sep 24 13:53:20 2011
New Revision: 337963

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=337963
Log:
Final 1.8.7 patch and remove t38gateway-trunk.patch

Removed:
    team/irroot/patches/t38gateway-trunk.patch
Modified:
    team/irroot/patches/distrotech-1.8.7.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=337963&r1=337962&r2=337963
==============================================================================
--- team/irroot/patches/distrotech-1.8.7.patch (original)
+++ team/irroot/patches/distrotech-1.8.7.patch Sat Sep 24 13:53:20 2011
@@ -715,24 +715,20 @@
  	}
  
  	if (!ast_test_flag(p, LOCAL_ALREADY_MASQED)) {
-Index: configure.ac
-===================================================================
---- configure.ac	(revision 336934)
-+++ configure.ac	(working copy)
-@@ -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])
--   AC_CHECK_HEADER([linux/mISDNdsp.h], [AC_DEFINE_UNQUOTED([MISDN_1_2], 1, [Build chan_misdn for mISDN 1.2 or later.])])
-+   AC_CHECK_HEADER([mISDN/mISDNdsp.h], [AC_DEFINE_UNQUOTED([MISDN_1_2], 1, [Build chan_misdn for mISDN 1.2 or later.])])
-    AC_CHECK_MEMBER([Q931_info_t.redirect_dn], [], [PBX_MISDN=0], [#include <mISDNuser/mISDNlib.h>])
- fi
- 
 Index: apps/app_queue.c
 ===================================================================
 --- apps/app_queue.c	(revision 336934)
 +++ apps/app_queue.c	(working copy)
-@@ -522,11 +522,25 @@
+@@ -224,6 +224,8 @@
+ 			up by another user.</para>
+ 			<para>This application will return to the dialplan if the queue does not exist, or
+ 			any of the join options cause the caller to not enter the queue.</para>
++			<para>This application does not automatically answer and should be preceeded
++			by an application such as Answer(), Progress(), or Ringing().</para>
+ 			<para>This application sets the following channel variable upon completion:</para>
+ 			<variablelist>
+ 				<variable name="QUEUESTATUS">
+@@ -522,11 +524,25 @@
  					<enum name="count">
  						<para>Returns the total number of members for the specified queue.</para>
  					</enum>
@@ -759,7 +755,7 @@
  		</description>
  		<see-also>
  			<ref type="application">Queue</ref>
-@@ -659,6 +673,7 @@
+@@ -659,6 +675,7 @@
  		</syntax>
  		<description>
  			<para>Gets or sets queue members penalty.</para>
@@ -767,7 +763,7 @@
  		</description>
  		<see-also>
  			<ref type="application">Queue</ref>
-@@ -934,6 +949,12 @@
+@@ -934,6 +951,12 @@
  /*! \brief queues.conf [general] option */
  static int update_cdr = 0;
  
@@ -780,7 +776,7 @@
  enum queue_result {
  	QUEUE_UNKNOWN = 0,
  	QUEUE_TIMEOUT = 1,
-@@ -1043,6 +1064,7 @@
+@@ -1043,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 */
@@ -788,7 +784,7 @@
  };
  
  enum empty_conditions {
-@@ -1160,6 +1182,7 @@
+@@ -1160,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 */
@@ -796,7 +792,7 @@
  	int timeoutpriority;                /*!< Do we allow a fraction of the timeout to occur for a ring? */
  
  	/* Queue strategy things */
-@@ -1190,9 +1213,12 @@
+@@ -1190,9 +1215,12 @@
  static struct ao2_container *queues;
  
  static void update_realtime_members(struct call_queue *q);
@@ -810,7 +806,7 @@
  /*! \brief sets the QUEUESTATUS channel variable */
  static void set_queue_result(struct ast_channel *chan, enum queue_result res)
  {
-@@ -1436,13 +1462,14 @@
+@@ -1436,13 +1464,14 @@
  		"Queue: %s\r\n"
  		"Location: %s\r\n"
  		"MemberName: %s\r\n"
@@ -826,7 +822,7 @@
  		m->penalty, m->calls, (int)m->lastcall, m->status, m->paused
  	);
  
-@@ -1552,7 +1579,7 @@
+@@ -1552,7 +1581,7 @@
  	return state;
  }
  
@@ -835,7 +831,7 @@
  {
  	struct ao2_iterator miter, qiter;
  	struct member *m;
-@@ -1698,6 +1725,7 @@
+@@ -1698,6 +1727,7 @@
  	q->numperiodicannounce = 0;
  	q->autopause = QUEUE_AUTOPAUSE_OFF;
  	q->timeoutpriority = TIMEOUT_PRIORITY_APP;
@@ -843,7 +839,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 @@
+@@ -2008,6 +2038,8 @@
  			q->montype = 1;
  	} else if (!strcasecmp(param, "autopause")) {
  		q->autopause = autopause2int(val);
@@ -852,7 +848,7 @@
  	} else if (!strcasecmp(param, "maxlen")) {
  		q->maxlen = atoi(val);
  		if (q->maxlen < 0)
-@@ -2077,16 +2107,24 @@
+@@ -2077,16 +2109,24 @@
   * \brief Find rt member record to update otherwise create one.
   *
   * Search for member in queue, if found update penalty/paused state,
@@ -879,7 +875,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 @@
+@@ -2094,8 +2134,11 @@
  
  	if (penalty_str) {
  		penalty = atoi(penalty_str);
@@ -892,7 +888,7 @@
  	}
  
  	if (paused_str) {
-@@ -2104,33 +2145,45 @@
+@@ -2104,33 +2147,45 @@
  			paused = 0;
  	}
  
@@ -959,7 +955,7 @@
  			ao2_link(q->members, m);
  			ao2_ref(m, -1);
  			m = NULL;
-@@ -2304,19 +2357,18 @@
+@@ -2304,19 +2359,18 @@
  	ao2_iterator_destroy(&mem_iter);
  
  	while ((interface = ast_category_browse(member_config, interface))) {
@@ -985,7 +981,7 @@
  			ao2_unlink(q->members, m);
  			q->membercount--;
  		}
-@@ -2366,13 +2418,11 @@
+@@ -2366,13 +2420,11 @@
  			queue_t_unref(q, "Need to find realtime queue");
  		}
  
@@ -1000,7 +996,7 @@
  		if (q) {
  			if (!q->weight && prev_weight) {
  				ast_atomic_fetchadd_int(&use_weight, -1);
-@@ -2382,8 +2432,6 @@
+@@ -2382,8 +2434,6 @@
  			}
  		}
  		/* Other cases will end up with the proper value for use_weight */
@@ -1009,7 +1005,7 @@
  	} else {
  		update_realtime_members(q);
  	}
-@@ -2417,10 +2465,9 @@
+@@ -2417,10 +2467,9 @@
  		return;
  	}
  
@@ -1022,7 +1018,7 @@
  	mem_iter = ao2_iterator_init(q->members, 0);
  	while ((m = ao2_iterator_next(&mem_iter))) {
  		if (m->realtime)
-@@ -2430,19 +2477,18 @@
+@@ -2430,19 +2479,18 @@
  	ao2_iterator_destroy(&mem_iter);
  
  	while ((interface = ast_category_browse(member_config, interface))) {
@@ -1048,7 +1044,7 @@
  			ao2_unlink(q->members, m);
  			q->membercount--;
  		}
-@@ -2450,7 +2496,6 @@
+@@ -2450,7 +2498,6 @@
  	}
  	ao2_iterator_destroy(&mem_iter);
  	ao2_unlock(q);
@@ -1056,7 +1052,7 @@
  	ast_config_destroy(member_config);
  }
  
-@@ -2465,7 +2510,6 @@
+@@ -2465,7 +2512,6 @@
  	if (!(q = load_realtime_queue(queuename)))
  		return res;
  
@@ -1064,7 +1060,7 @@
  	ao2_lock(q);
  
  	/* This is our one */
-@@ -2474,7 +2518,6 @@
+@@ -2474,7 +2520,6 @@
  		if ((status = get_member_status(q, qe->max_penalty, qe->min_penalty, q->joinempty))) {
  			*reason = QUEUE_JOINEMPTY;
  			ao2_unlock(q);
@@ -1072,7 +1068,7 @@
  			queue_t_unref(q, "Done with realtime queue");
  			return res;
  		}
-@@ -2538,7 +2581,6 @@
+@@ -2538,7 +2583,6 @@
  		ast_debug(1, "Queue '%s' Join, Channel '%s', Position '%d'\n", q->name, qe->chan->name, qe->pos );
  	}
  	ao2_unlock(q);
@@ -1080,7 +1076,7 @@
  	queue_t_unref(q, "Done with realtime queue");
  
  	return res;
-@@ -2883,16 +2925,24 @@
+@@ -2883,16 +2927,24 @@
  	mem_iter = ao2_iterator_init(q->members, 0);
  	while ((mem = ao2_iterator_next(&mem_iter))) {
  		switch (mem->status) {
@@ -1114,7 +1110,7 @@
  		}
  		ao2_ref(mem, -1);
  
-@@ -2923,9 +2973,7 @@
+@@ -2923,9 +2975,7 @@
  	struct member *mem;
  	int found = 0;
  	struct ao2_iterator queue_iter;
@@ -1125,7 +1121,7 @@
  	queue_iter = ao2_iterator_init(queues, 0);
  	while ((q = ao2_t_iterator_next(&queue_iter, "Iterate through queues"))) {
  		if (q == rq) { /* don't check myself, could deadlock */
-@@ -3020,38 +3068,54 @@
+@@ -3020,38 +3070,54 @@
  	char tech[256];
  	char *location;
  	const char *macrocontext, *macroexten;
@@ -1196,7 +1192,7 @@
  		tmp->stillgoing = 0;
  		(*busies)++;
  		return 0;
-@@ -3066,8 +3130,9 @@
+@@ -3066,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 */
@@ -1207,7 +1203,7 @@
  		tmp->stillgoing = 0;	
  
  		ao2_lock(qe->parent);
-@@ -3301,7 +3366,7 @@
+@@ -3301,7 +3368,7 @@
  	return 0;
  }
  
@@ -1216,7 +1212,7 @@
  static int say_periodic_announcement(struct queue_ent *qe, int ringing)
  {
  	int res = 0;
-@@ -3406,6 +3471,18 @@
+@@ -3406,6 +3473,18 @@
  	}
  	ast_queue_log(qe->parent->name, qe->chan->uniqueid, membername, "RINGNOANSWER", "%d", rnatime);
  	if (qe->parent->autopause != QUEUE_AUTOPAUSE_OFF && pause) {
@@ -1235,7 +1231,7 @@
  		if (qe->parent->autopause == QUEUE_AUTOPAUSE_ON) {
  			if (!set_member_paused(qe->parent->name, interface, "Auto-Pause", 1)) {
  				ast_verb(3, "Auto-Pausing Queue Member %s in queue %s since they failed to answer.\n",
-@@ -4360,7 +4437,6 @@
+@@ -4360,7 +4439,6 @@
  	struct ao2_iterator memi;
  	struct ast_datastore *datastore, *transfer_ds;
  	struct queue_end_bridge *queue_end_bridge = NULL;
@@ -1243,7 +1239,7 @@
  
  	ast_channel_lock(qe->chan);
  	datastore = ast_channel_datastore_find(qe->chan, &dialed_interface_info, NULL);
-@@ -4443,9 +4519,6 @@
+@@ -4443,9 +4521,6 @@
  		qe->cancel_answered_elsewhere = 1;
  	}
  
@@ -1253,7 +1249,7 @@
  	ao2_lock(qe->parent);
  	ast_debug(1, "%s is trying to call a queue member.\n",
  							qe->chan->name);
-@@ -4464,8 +4537,6 @@
+@@ -4464,8 +4539,6 @@
  			ao2_ref(cur, -1);
  			ao2_unlock(qe->parent);
  			ao2_iterator_destroy(&memi);
@@ -1262,7 +1258,7 @@
  			goto out;
  		}
  		if (!datastore) {
-@@ -4473,8 +4544,6 @@
+@@ -4473,8 +4546,6 @@
  				ao2_ref(cur, -1);
  				ao2_unlock(qe->parent);
  				ao2_iterator_destroy(&memi);
@@ -1271,7 +1267,7 @@
  				callattempt_free(tmp);
  				goto out;
  			}
-@@ -4483,8 +4552,6 @@
+@@ -4483,8 +4554,6 @@
  				ao2_ref(cur, -1);
  				ao2_unlock(&qe->parent);
  				ao2_iterator_destroy(&memi);
@@ -1280,7 +1276,7 @@
  				callattempt_free(tmp);
  				goto out;
  			}
-@@ -4521,8 +4588,6 @@
+@@ -4521,8 +4590,6 @@
  				ao2_ref(cur, -1);
  				ao2_unlock(qe->parent);
  				ao2_iterator_destroy(&memi);
@@ -1289,7 +1285,7 @@
  				callattempt_free(tmp);
  				goto out;
  			}
-@@ -4585,8 +4650,6 @@
+@@ -4585,8 +4652,6 @@
  	++qe->pending;
  	ao2_unlock(qe->parent);
  	ring_one(qe, outgoing, &numbusies);
@@ -1298,7 +1294,7 @@
  	lpeer = wait_for_answer(qe, outgoing, &to, &digit, numbusies, ast_test_flag(&(bridge_config.features_caller), AST_FEATURE_DISCONNECT), forwardsallowed, update_connectedline);
  	/* The ast_channel_datastore_remove() function could fail here if the
  	 * datastore was moved to another channel during a masquerade. If this is
-@@ -4717,8 +4780,9 @@
+@@ -4717,8 +4782,9 @@
  		else
  			ast_moh_stop(qe->chan);
  		/* If appropriate, log that we have a destination channel */
@@ -1309,7 +1305,7 @@
  		/* Make sure channels are compatible */
  		res = ast_channel_make_compatible(qe->chan, peer);
  		if (res < 0) {
-@@ -4798,10 +4862,11 @@
+@@ -4798,10 +4864,11 @@
  				if (mixmonapp) {
  					ast_debug(1, "Starting MixMonitor as requested.\n");
  					if (!monitorfilename) {
@@ -1323,7 +1319,7 @@
  					} else {
  						const char *m = monitorfilename;
  						for (p = tmpid2; p < tmpid2 + sizeof(tmpid2) - 1; p++, m++) {
-@@ -4868,12 +4933,13 @@
+@@ -4868,12 +4935,13 @@
  					
  					ast_debug(1, "Arguments being passed to MixMonitor: %s\n", mixmonargs);
  					/* We purposely lock the CDR so that pbx_exec does not update the application data */
@@ -1340,14 +1336,14 @@
  				} else {
  					ast_log(LOG_WARNING, "Asked to run MixMonitor on this call, but cannot find the MixMonitor app!\n");
  				}
-@@ -5009,8 +5075,31 @@
+@@ -5009,8 +5077,34 @@
  		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));
 -		if (update_cdr && qe->chan->cdr) 
 -			ast_copy_string(qe->chan->cdr->dstchannel, member->membername, sizeof(qe->chan->cdr->dstchannel));
 +
-+		if (update_cdr && qe->chan->cdr) {
++		if (qe->chan->cdr) {
 +			struct ast_cdr *cdr;
 +			struct ast_cdr *newcdr;
 +
@@ -1357,8 +1353,8 @@
 +				cdr = cdr->next;
 +			}
 +
-+			/* If there is no CDR add one to the stack*/
-+			if ((strcasecmp(cdr->uniqueid, qe->chan->uniqueid)) && 
++			/* If this CDR is not related to us add new one*/
++			if ((strcasecmp(cdr->uniqueid, qe->chan->uniqueid)) &&
 +			    (strcasecmp(cdr->linkedid, qe->chan->uniqueid)) &&
 +			    (newcdr = ast_cdr_dup(cdr))) {
 +				ast_cdr_init(newcdr, qe->chan);
@@ -1368,13 +1364,16 @@
 +				cdr = cdr->next;
 +				ast_channel_unlock(qe->chan);
 +			}
-+			ast_copy_string(cdr->dstchannel, peer->name, sizeof(cdr->dstchannel));
++
++			if (update_cdr) {
++				ast_copy_string(cdr->dstchannel, member->membername, sizeof(cdr->dstchannel));
++			}
 +		}
 +
  		if (qe->parent->eventwhencalled)
  			manager_event(EVENT_FLAG_AGENT, "AgentConnect",
  					"Queue: %s\r\n"
-@@ -5188,15 +5277,16 @@
+@@ -5188,15 +5282,16 @@
  
  	ast_copy_string(tmpmem.interface, interface, sizeof(tmpmem.interface));
  	if ((q = ao2_t_find(queues, &tmpq, OBJ_POINTER, "Temporary reference for interface removal"))) {
@@ -1394,7 +1393,7 @@
  				return RES_NOT_DYNAMIC;
  			}
  			q->membercount--;
-@@ -5216,7 +5306,6 @@
+@@ -5216,7 +5311,6 @@
  			res = RES_EXISTS;
  		}
  		ao2_unlock(q);
@@ -1402,7 +1401,7 @@
  		queue_t_unref(q, "Expiring temporary reference");
  	}
  
-@@ -5241,8 +5330,6 @@
+@@ -5241,8 +5335,6 @@
  	if (!(q = load_realtime_queue(queuename)))
  		return res;
  
@@ -1411,7 +1410,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 +5340,14 @@
+@@ -5253,13 +5345,14 @@
  				"Queue: %s\r\n"
  				"Location: %s\r\n"
  				"MemberName: %s\r\n"
@@ -1427,7 +1426,7 @@
  				"dynamic",
  				new_member->penalty, new_member->calls, (int) new_member->lastcall,
  				new_member->status, new_member->paused);
-@@ -5279,7 +5367,6 @@
+@@ -5279,7 +5372,6 @@
  		res = RES_EXISTS;
  	}
  	ao2_unlock(q);
@@ -1435,7 +1434,7 @@
  	queue_t_unref(q, "Expiring temporary reference");
  
  	return res;
-@@ -5367,35 +5454,34 @@
+@@ -5367,35 +5459,34 @@
  	int foundinterface = 0, foundqueue = 0;
  	struct call_queue *q;
  	struct member *mem;
@@ -1488,7 +1487,7 @@
  
  	if (foundinterface) {
  		return RESULT_SUCCESS;
-@@ -5460,8 +5546,6 @@
+@@ -5460,8 +5551,6 @@
  	struct call_queue *cur_queue;
  	char queue_data[PM_MAX_LEN];
  
@@ -1497,7 +1496,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 +5616,6 @@
+@@ -5532,7 +5621,6 @@
  		queue_t_unref(cur_queue, "Expire reload reference");
  	}
  
@@ -1505,7 +1504,7 @@
  	if (db_tree) {
  		ast_log(LOG_NOTICE, "Queue members successfully reloaded from database.\n");
  		ast_db_freetree(db_tree);
-@@ -5616,6 +5699,8 @@
+@@ -5616,6 +5704,8 @@
  {
  	int res=-1;
  	char *parse, *temppos = NULL;
@@ -1514,7 +1513,7 @@
  	AST_DECLARE_APP_ARGS(args,
  		AST_APP_ARG(queuename);
  		AST_APP_ARG(interface);
-@@ -5641,9 +5726,17 @@
+@@ -5641,9 +5731,17 @@
  
  	ast_debug(1, "queue: %s, member: %s\n", args.queuename, args.interface);
  
@@ -1533,7 +1532,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 +5801,11 @@
+@@ -5708,7 +5806,11 @@
  
  	switch (add_to_queue(args.queuename, args.interface, args.membername, penalty, 0, queue_persistent_members, args.state_interface)) {
  	case RES_OKAY:
@@ -1546,7 +1545,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 +5821,7 @@
+@@ -5724,7 +5826,7 @@
  		res = 0;
  		break;
  	case RES_OUTOFMEMORY:
@@ -1555,7 +1554,7 @@
  		break;
  	}
  
-@@ -6168,31 +6265,37 @@
+@@ -6168,31 +6270,37 @@
  	return 0;
  }
  
@@ -1603,7 +1602,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 +6305,7 @@
+@@ -6202,7 +6310,7 @@
  				ao2_ref(m, -1);
  			}
  			ao2_iterator_destroy(&mem_iter);
@@ -1612,7 +1611,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 +6315,7 @@
+@@ -6212,7 +6320,7 @@
  				ao2_ref(m, -1);
  			}
  			ao2_iterator_destroy(&mem_iter);
@@ -1621,7 +1620,7 @@
  			time_t now;
  			time(&now);
  			mem_iter = ao2_iterator_init(q->members, 0);
-@@ -6225,22 +6328,104 @@
+@@ -6225,22 +6333,104 @@
  				ao2_ref(m, -1);
  			}
  			ao2_iterator_destroy(&mem_iter);
@@ -1732,7 +1731,7 @@
  */
  static int queue_function_qac_dep(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
  {
-@@ -6446,7 +6631,8 @@
+@@ -6446,7 +6636,8 @@
  
  static struct ast_custom_function queuemembercount_function = {
  	.name = "QUEUE_MEMBER",
@@ -1742,7 +1741,7 @@
  };
  
  static struct ast_custom_function queuemembercount_dep = {
-@@ -6529,8 +6715,9 @@
+@@ -6529,8 +6720,9 @@
  {
  	const char *general_val = NULL;
  	queue_persistent_members = 0;
@@ -1753,7 +1752,7 @@
  	autofill_default = 0;
  	if ((general_val = ast_variable_retrieve(cfg, "general", "autofill")))
  		autofill_default = ast_true(general_val);
-@@ -6545,6 +6732,12 @@
+@@ -6545,6 +6737,12 @@
  	shared_lastcall = 0;
  	if ((general_val = ast_variable_retrieve(cfg, "general", "shared_lastcall")))
  		shared_lastcall = ast_true(general_val);
@@ -1766,7 +1765,7 @@
  }
  
  /*! \brief reload information pertaining to a single member
-@@ -6810,7 +7003,7 @@
+@@ -6810,7 +7008,7 @@
  
  	/* We've made it here, so it looks like we're doing operations on all queues. */
  	ao2_lock(queues);
@@ -1775,7 +1774,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 +7030,12 @@
+@@ -6837,12 +7035,12 @@
  	ao2_unlock(queues);
  	return 0;
  }
@@ -1790,7 +1789,7 @@
   * clear_queue function. If no queuename is passed in, then
   * all queues will have their statistics reset.
   *
-@@ -6992,7 +7185,11 @@
+@@ -6992,7 +7190,11 @@
  			while ((mem = ao2_iterator_next(&mem_iter))) {
  				ast_str_set(&out, 0, "      %s", mem->membername);
  				if (strcasecmp(mem->membername, mem->interface)) {
@@ -1803,7 +1802,7 @@
  				}
  				if (mem->penalty)
  					ast_str_append(&out, 0, " with penalty %d", mem->penalty);
-@@ -7260,6 +7457,7 @@
+@@ -7260,6 +7462,7 @@
  						"Queue: %s\r\n"
  						"Name: %s\r\n"
  						"Location: %s\r\n"
@@ -1811,7 +1810,7 @@
  						"Membership: %s\r\n"
  						"Penalty: %d\r\n"
  						"CallsTaken: %d\r\n"
-@@ -7268,7 +7466,7 @@
+@@ -7268,7 +7471,7 @@
  						"Paused: %d\r\n"
  						"%s"
  						"\r\n",
@@ -1820,7 +1819,7 @@
  						mem->penalty, mem->calls, (int)mem->lastcall, mem->status, mem->paused, idText);
  				}
  				ao2_ref(mem, -1);
-@@ -7344,7 +7542,11 @@
+@@ -7344,7 +7547,11 @@
  
  	switch (add_to_queue(queuename, interface, membername, penalty, paused, queue_persistent_members, state_interface)) {
  	case RES_OKAY:
@@ -1833,7 +1832,7 @@
  		astman_send_ack(s, m, "Added interface to queue");
  		break;
  	case RES_EXISTS:
-@@ -7364,6 +7566,7 @@
+@@ -7364,6 +7571,7 @@
  static int manager_remove_queue_member(struct mansession *s, const struct message *m)
  {
  	const char *queuename, *interface;
@@ -1841,7 +1840,7 @@
  
  	queuename = astman_get_header(m, "Queue");
  	interface = astman_get_header(m, "Interface");
-@@ -7373,9 +7576,17 @@
+@@ -7373,9 +7581,17 @@
  		return 0;
  	}
  
@@ -1860,7 +1859,7 @@
  		astman_send_ack(s, m, "Removed interface from queue");
  		break;
  	case RES_EXISTS:
-@@ -7597,7 +7808,11 @@
+@@ -7597,7 +7813,11 @@
  
  	switch (add_to_queue(queuename, interface, membername, penalty, 0, queue_persistent_members, state_interface)) {
  	case RES_OKAY:
@@ -1873,7 +1872,7 @@
  		ast_cli(a->fd, "Added interface '%s' to queue '%s'\n", interface, queuename);
  		return CLI_SUCCESS;
  	case RES_EXISTS:
-@@ -7665,11 +7880,12 @@
+@@ -7665,11 +7885,12 @@
  static char *handle_queue_remove_member(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
  {
  	const char *queuename, *interface;
@@ -1887,7 +1886,7 @@
  			"Usage: queue remove member <channel> from <queue>\n"
  			"       Remove a specific channel from a queue.\n";
  		return NULL;
-@@ -7686,10 +7902,18 @@
+@@ -7686,10 +7907,18 @@
  	queuename = a->argv[5];
  	interface = a->argv[3];
  
@@ -1908,7 +1907,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 +8636,26 @@
+@@ -8412,6 +8641,26 @@
  	return 0;
  }
  
@@ -1935,6 +1934,19 @@
  AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "True Call Queueing",
  		.load = load_module,
  		.unload = unload_module,
+Index: configure.ac
+===================================================================
+--- configure.ac	(revision 336934)
++++ configure.ac	(working copy)
+@@ -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])
+-   AC_CHECK_HEADER([linux/mISDNdsp.h], [AC_DEFINE_UNQUOTED([MISDN_1_2], 1, [Build chan_misdn for mISDN 1.2 or later.])])
++   AC_CHECK_HEADER([mISDN/mISDNdsp.h], [AC_DEFINE_UNQUOTED([MISDN_1_2], 1, [Build chan_misdn for mISDN 1.2 or later.])])
+    AC_CHECK_MEMBER([Q931_info_t.redirect_dn], [], [PBX_MISDN=0], [#include <mISDNuser/mISDNlib.h>])
+ fi
+ 
 Index: addons/chan_ooh323.c
 ===================================================================
 --- addons/chan_ooh323.c	(revision 336934)
@@ -3450,6 +3462,20 @@
  	out->ts = f->ts;
  	out->len = f->len;
  	out->seqno = f->seqno;
+Index: configs/sip.conf.sample
+===================================================================
+--- configs/sip.conf.sample	(revision 336934)
++++ configs/sip.conf.sample	(working copy)
+@@ -890,6 +890,9 @@
+ ;encryption=no                  ; Whether to offer SRTP encrypted media (and only SRTP encrypted media)
+                                 ; on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if
+                                 ; the peer does not support SRTP. Defaults to no.
++                                ; this option can be set to try to offer encryption and not fail if peer
++                                ; ignores the request. the peer may reject this based on local settings.
++;encryption_taglen=80           ; Set the auth tag length offered in the INVITE either 32/80 default 80
+ 
+ ;----------------------------------------- REALTIME SUPPORT ------------------------
+ ; For additional information on ARA, the Asterisk Realtime Architecture,
 Index: configs/chan_ooh323.conf.sample
 ===================================================================
 --- configs/chan_ooh323.conf.sample	(revision 336934)




More information about the asterisk-commits mailing list