[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