[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