[asterisk-commits] oej: branch oej/roibos-cng-support-1.8 r373294 - in /team/oej/roibos-cng-supp...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Sep 21 08:17:48 CDT 2012
Author: oej
Date: Fri Sep 21 08:17:39 2012
New Revision: 373294
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=373294
Log:
Updating to latest stuff
Modified:
team/oej/roibos-cng-support-1.8/ (props changed)
team/oej/roibos-cng-support-1.8/apps/app_meetme.c
team/oej/roibos-cng-support-1.8/apps/app_queue.c
team/oej/roibos-cng-support-1.8/apps/app_voicemail.c
team/oej/roibos-cng-support-1.8/channels/chan_iax2.c
team/oej/roibos-cng-support-1.8/channels/chan_local.c
team/oej/roibos-cng-support-1.8/channels/chan_sip.c
team/oej/roibos-cng-support-1.8/channels/sig_ss7.c
team/oej/roibos-cng-support-1.8/channels/sip/sdp_crypto.c
team/oej/roibos-cng-support-1.8/funcs/func_math.c
team/oej/roibos-cng-support-1.8/include/asterisk/astobj2.h
team/oej/roibos-cng-support-1.8/include/asterisk/channel.h
team/oej/roibos-cng-support-1.8/main/Makefile
team/oej/roibos-cng-support-1.8/main/astmm.c
team/oej/roibos-cng-support-1.8/main/astobj2.c
team/oej/roibos-cng-support-1.8/main/channel.c
team/oej/roibos-cng-support-1.8/main/features.c
team/oej/roibos-cng-support-1.8/main/manager.c
team/oej/roibos-cng-support-1.8/main/ssl.c
team/oej/roibos-cng-support-1.8/main/tcptls.c
team/oej/roibos-cng-support-1.8/res/res_rtp_asterisk.c
Propchange: team/oej/roibos-cng-support-1.8/
------------------------------------------------------------------------------
automerge = Is-there-life-off-net?
Propchange: team/oej/roibos-cng-support-1.8/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Sep 21 08:17:39 2012
@@ -1,1 +1,1 @@
-/branches/1.8:1-372607
+/branches/1.8:1-373293
Modified: team/oej/roibos-cng-support-1.8/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_meetme.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_meetme.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_meetme.c Fri Sep 21 08:17:39 2012
@@ -142,7 +142,8 @@
</option>
<option name="p" hasparams="optional">
<para>Allow user to exit the conference by pressing <literal>#</literal> (default)
- or any of the defined keys. The key used is set to channel variable
+ or any of the defined keys. Dial plan execution will continue at the next
+ priority following MeetMe. The key used is set to channel variable
<variable>MEETME_EXIT_KEY</variable>.</para>
<argument name="keys" required="true" />
<note>
@@ -4241,6 +4242,7 @@
}
}
AST_LIST_UNLOCK(&confs);
+ cnf = NULL;
if (!found) {
/* At this point, we have a confno_tmp (static conference) that is empty */
if ((empty_no_pin && ast_strlen_zero(stringp)) || (!empty_no_pin)) {
Modified: team/oej/roibos-cng-support-1.8/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_queue.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_queue.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_queue.c Fri Sep 21 08:17:39 2012
@@ -4543,7 +4543,7 @@
callattempt_free(tmp);
ao2_ref(cur, -1);
ao2_iterator_destroy(&memi);
- ao2_unlock(&qe->parent);
+ ao2_unlock(qe->parent);
goto out;
}
datastore->data = dialed_interfaces;
Modified: team/oej/roibos-cng-support-1.8/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_voicemail.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_voicemail.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_voicemail.c Fri Sep 21 08:17:39 2012
@@ -648,7 +648,6 @@
char *emailbody; /*!< E-mail body */
char pager[80]; /*!< E-mail address to pager (no attachment) */
char serveremail[80]; /*!< From: Mail address */
- char mailcmd[160]; /*!< Configurable mail command */
char language[MAX_LANGUAGE]; /*!< Config: Language setting */
char zonetag[80]; /*!< Time zone */
char locale[20]; /*!< The locale (for presentation of date/time) */
@@ -11327,7 +11326,6 @@
USER(ast_vm_user, emailbody, AST_DATA_STRING) \
USER(ast_vm_user, pager, AST_DATA_STRING) \
USER(ast_vm_user, serveremail, AST_DATA_STRING) \
- USER(ast_vm_user, mailcmd, AST_DATA_STRING) \
USER(ast_vm_user, language, AST_DATA_STRING) \
USER(ast_vm_user, zonetag, AST_DATA_STRING) \
USER(ast_vm_user, callback, AST_DATA_STRING) \
@@ -11355,7 +11353,6 @@
USER(ast_vm_user, emailbody, AST_DATA_STRING) \
USER(ast_vm_user, pager, AST_DATA_STRING) \
USER(ast_vm_user, serveremail, AST_DATA_STRING) \
- USER(ast_vm_user, mailcmd, AST_DATA_STRING) \
USER(ast_vm_user, language, AST_DATA_STRING) \
USER(ast_vm_user, zonetag, AST_DATA_STRING) \
USER(ast_vm_user, callback, AST_DATA_STRING) \
@@ -11731,8 +11728,8 @@
vmu->fullname,
vmu->email,
vmu->pager,
- vmu->serveremail,
- vmu->mailcmd,
+ ast_strlen_zero(vmu->serveremail) ? serveremail : vmu->serveremail,
+ mailcmd,
vmu->language,
vmu->zonetag,
vmu->callback,
Modified: team/oej/roibos-cng-support-1.8/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/channels/chan_iax2.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/channels/chan_iax2.c (original)
+++ team/oej/roibos-cng-support-1.8/channels/chan_iax2.c Fri Sep 21 08:17:39 2012
@@ -3346,12 +3346,10 @@
ast_debug(3, "Sending %d on %d/%d to %s:%d\n", f->ts, callno, iaxs[callno]->peercallno, ast_inet_ntoa(iaxs[callno]->addr.sin_addr), ntohs(iaxs[callno]->addr.sin_port));
if (f->transfer) {
- if (iaxdebug)
- iax_showframe(f, NULL, 0, &iaxs[callno]->transfer, f->datalen - sizeof(struct ast_iax2_full_hdr));
+ iax_outputframe(f, NULL, 0, &iaxs[callno]->transfer, f->datalen - sizeof(struct ast_iax2_full_hdr));
res = sendto(iaxs[callno]->sockfd, f->data, f->datalen, 0,(struct sockaddr *)&iaxs[callno]->transfer, sizeof(iaxs[callno]->transfer));
} else {
- if (iaxdebug)
- iax_showframe(f, NULL, 0, &iaxs[callno]->addr, f->datalen - sizeof(struct ast_iax2_full_hdr));
+ iax_outputframe(f, NULL, 0, &iaxs[callno]->addr, f->datalen - sizeof(struct ast_iax2_full_hdr));
res = sendto(iaxs[callno]->sockfd, f->data, f->datalen, 0,(struct sockaddr *)&iaxs[callno]->addr, sizeof(iaxs[callno]->addr));
}
if (res < 0) {
@@ -4738,9 +4736,7 @@
data.f.type = AST_FRAME_IAX;
data.f.csub = compress_subclass(command);
- if (iaxdebug) {
- iax_outputframe(NULL, &data.f, 0, sin, size - sizeof(struct ast_iax2_full_hdr));
- }
+ iax_outputframe(NULL, &data.f, 0, sin, size - sizeof(struct ast_iax2_full_hdr));
return sendto(sockfd, &data, size, 0, (struct sockaddr *)sin, sizeof(*sin));
}
Modified: team/oej/roibos-cng-support-1.8/channels/chan_local.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/channels/chan_local.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/channels/chan_local.c (original)
+++ team/oej/roibos-cng-support-1.8/channels/chan_local.c Fri Sep 21 08:17:39 2012
@@ -83,6 +83,8 @@
static const int BUCKET_SIZE = 1;
static struct ao2_container *locals;
+
+static unsigned int name_sequence = 0;
static struct ast_jb_conf g_jb_conf = {
.flags = 0,
@@ -1150,7 +1152,8 @@
static struct ast_channel *local_new(struct local_pvt *p, int state, const char *linkedid)
{
struct ast_channel *tmp = NULL, *tmp2 = NULL;
- int randnum = ast_random() & 0xffff, fmt = 0;
+ int fmt = 0;
+ int generated_seqno = ast_atomic_fetchadd_int((int *)&name_sequence, +1);
const char *t;
int ama;
@@ -1168,8 +1171,8 @@
/* Make sure that the ;2 channel gets the same linkedid as ;1. You can't pass linkedid to both
* allocations since if linkedid isn't set, then each channel will generate its own linkedid. */
- if (!(tmp = ast_channel_alloc(1, state, 0, 0, t, p->exten, p->context, linkedid, ama, "Local/%s@%s-%04x;1", p->exten, p->context, randnum))
- || !(tmp2 = ast_channel_alloc(1, AST_STATE_RING, 0, 0, t, p->exten, p->context, tmp->linkedid, ama, "Local/%s@%s-%04x;2", p->exten, p->context, randnum))) {
+ if (!(tmp = ast_channel_alloc(1, state, 0, 0, t, p->exten, p->context, linkedid, ama, "Local/%s@%s-%08x;1", p->exten, p->context, generated_seqno))
+ || !(tmp2 = ast_channel_alloc(1, AST_STATE_RING, 0, 0, t, p->exten, p->context, tmp->linkedid, ama, "Local/%s@%s-%08x;2", p->exten, p->context, generated_seqno))) {
if (tmp) {
tmp = ast_channel_release(tmp);
}
Modified: team/oej/roibos-cng-support-1.8/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/channels/chan_sip.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/channels/chan_sip.c (original)
+++ team/oej/roibos-cng-support-1.8/channels/chan_sip.c Fri Sep 21 08:17:39 2012
@@ -2357,6 +2357,8 @@
ast_free(args->tls_cfg->cipher);
ast_free(args->tls_cfg->cafile);
ast_free(args->tls_cfg->capath);
+
+ ast_ssl_teardown(args->tls_cfg);
}
ast_free(args->tls_cfg);
ast_free((char *) args->name);
@@ -3922,7 +3924,7 @@
*/
owner = sip_pvt_lock_full(p);
if (owner) {
- ast_log(LOG_WARNING, "Autodestruct on dialog '%s' with owner in place (Method: %s). Rescheduling destruction for 10000 ms\n", p->callid, sip_methods[p->method].text);
+ ast_log(LOG_WARNING, "Autodestruct on dialog '%s' with owner %s in place (Method: %s). Rescheduling destruction for 10000 ms\n", p->callid, owner->name, sip_methods[p->method].text);
ast_queue_hangup_with_cause(owner, AST_CAUSE_PROTOCOL_ERROR);
ast_channel_unlock(owner);
ast_channel_unref(owner);
@@ -9141,6 +9143,7 @@
}
if (initialize_udptl(p)) {
+ ast_log(LOG_WARNING, "Rejecting offer with image stream due to UDPTL initialization failure\n");
return -1;
}
@@ -29253,7 +29256,8 @@
if (!(opp_chan = ast_bridged_channel(chan))) {
return NULL;
- } else if ((opp_chan->tech != &sip_tech) || (!(opp = opp_chan->tech_pvt))) {
+ } else if (((opp_chan->tech != &sip_tech) && (opp_chan->tech != &sip_tech_info)) ||
+ (!(opp = opp_chan->tech_pvt))) {
return NULL;
}
Modified: team/oej/roibos-cng-support-1.8/channels/sig_ss7.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/channels/sig_ss7.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/channels/sig_ss7.c (original)
+++ team/oej/roibos-cng-support-1.8/channels/sig_ss7.c Fri Sep 21 08:17:39 2012
@@ -528,6 +528,7 @@
p->call_level = SIG_SS7_CALL_LEVEL_SETUP;
}
+ /* Companding law is determined by SS7 signaling type. */
if (linkset->type == SS7_ITU) {
law = SIG_SS7_ALAW;
} else {
@@ -1778,6 +1779,13 @@
{
struct ast_channel *ast;
+ /* Companding law is determined by SS7 signaling type. */
+ if (p->ss7->type == SS7_ITU) {
+ law = SIG_SS7_ALAW;
+ } else {
+ law = SIG_SS7_ULAW;
+ }
+
sig_ss7_set_outgoing(p, 1);
ast = sig_ss7_new_ast_channel(p, AST_STATE_RESERVED, law, transfercapability, p->exten, requestor);
if (!ast) {
Modified: team/oej/roibos-cng-support-1.8/channels/sip/sdp_crypto.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/channels/sip/sdp_crypto.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/channels/sip/sdp_crypto.c (original)
+++ team/oej/roibos-cng-support-1.8/channels/sip/sdp_crypto.c Fri Sep 21 08:17:39 2012
@@ -49,6 +49,8 @@
char *a_crypto;
unsigned char local_key[SRTP_MASTER_LEN];
char local_key64[SRTP_MASTER_LEN64];
+ unsigned char remote_key[SRTP_MASTER_LEN];
+ char suite[64];
};
static int set_crypto_policy(struct ast_srtp_policy *policy, int suite_val, const unsigned char *master_key, unsigned long ssrc, int inbound);
@@ -257,11 +259,19 @@
return -1;
}
-
if ((key_len = ast_base64decode(remote_key, key_salt, sizeof(remote_key))) != SRTP_MASTER_LEN) {
- ast_log(LOG_WARNING, "SRTP sdescriptions key %d != %d\n", key_len, SRTP_MASTER_LEN);
- return -1;
- }
+ ast_log(LOG_WARNING, "SRTP descriptions key %d != %d\n", key_len, SRTP_MASTER_LEN);
+ return -1;
+ }
+
+ if (!memcmp(p->remote_key, remote_key, sizeof(p->remote_key))) {
+ ast_debug(1, "SRTP remote key unchanged; maintaining current policy\n");
+ return 0;
+ }
+
+ /* Set the accepted policy and remote key */
+ ast_copy_string(p->suite, suite, sizeof(p->suite));
+ memcpy(p->remote_key, remote_key, sizeof(p->remote_key));
if (sdp_crypto_activate(p, suite_val, remote_key, rtp) < 0) {
return -1;
@@ -280,13 +290,17 @@
int sdp_crypto_offer(struct sdp_crypto *p)
{
char crypto_buf[128];
- const char *crypto_suite = "AES_CM_128_HMAC_SHA1_80"; /* Crypto offer */
+
+ if (ast_strlen_zero(p->suite)) {
+ /* Default crypto offer */
+ strcpy(p->suite, "AES_CM_128_HMAC_SHA1_80");
+ }
if (p->a_crypto) {
ast_free(p->a_crypto);
}
- if (snprintf(crypto_buf, sizeof(crypto_buf), "a=crypto:1 %s inline:%s\r\n", crypto_suite, p->local_key64) < 1) {
+ if (snprintf(crypto_buf, sizeof(crypto_buf), "a=crypto:1 %s inline:%s\r\n", p->suite, p->local_key64) < 1) {
return -1;
}
Modified: team/oej/roibos-cng-support-1.8/funcs/func_math.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/funcs/func_math.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/funcs/func_math.c (original)
+++ team/oej/roibos-cng-support-1.8/funcs/func_math.c Fri Sep 21 08:17:39 2012
@@ -421,8 +421,6 @@
modify_orig = 1;
}
- ast_log(LOG_NOTICE, "The value is now: %d\n", int_value);
-
if (snprintf(returnvar, sizeof(returnvar), "%d", int_value) > 0) {
pbx_builtin_setvar_helper(chan, data, returnvar);
if (modify_orig) {
Modified: team/oej/roibos-cng-support-1.8/include/asterisk/astobj2.h
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/include/asterisk/astobj2.h?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/include/asterisk/astobj2.h (original)
+++ team/oej/roibos-cng-support-1.8/include/asterisk/astobj2.h Fri Sep 21 08:17:39 2012
@@ -462,7 +462,7 @@
#endif
-int __ao2_ref_debug(void *o, int delta, char *tag, char *file, int line, const char *funcname);
+int __ao2_ref_debug(void *o, int delta, const char *tag, const char *file, int line, const char *funcname);
int __ao2_ref(void *o, int delta);
/*! @} */
Modified: team/oej/roibos-cng-support-1.8/include/asterisk/channel.h
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/include/asterisk/channel.h?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/include/asterisk/channel.h (original)
+++ team/oej/roibos-cng-support-1.8/include/asterisk/channel.h Fri Sep 21 08:17:39 2012
@@ -1874,7 +1874,7 @@
/*!
* \brief Waits for a digit
* \param c channel to wait for a digit on
- * \param ms how many milliseconds to wait
+ * \param ms how many milliseconds to wait (<0 for indefinite).
* \return Returns <0 on error, 0 on no entry, and the digit on success.
*/
int ast_waitfordigit(struct ast_channel *c, int ms);
@@ -1883,7 +1883,7 @@
* \brief Wait for a digit
* Same as ast_waitfordigit() with audio fd for outputting read audio and ctrlfd to monitor for reading.
* \param c channel to wait for a digit on
- * \param ms how many milliseconds to wait
+ * \param ms how many milliseconds to wait (<0 for indefinite).
* \param audiofd audio file descriptor to write to if audio frames are received
* \param ctrlfd control file descriptor to monitor for reading
* \return Returns 1 if ctrlfd becomes available
Modified: team/oej/roibos-cng-support-1.8/main/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/main/Makefile?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/main/Makefile (original)
+++ team/oej/roibos-cng-support-1.8/main/Makefile Fri Sep 21 08:17:39 2012
@@ -174,6 +174,10 @@
endif
$(OBJS): _ASTCFLAGS+=-DAST_MODULE=\"core\"
+
+ssl.o: _ASTCFLAGS+=$(OPENSSL_INCLUDE)
+
+tcptls.o: _ASTCFLAGS+=$(OPENSSL_INCLUDE)
$(MAIN_TGT): $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS)
@$(CC) -c -o buildinfo.o $(_ASTCFLAGS) buildinfo.c $(ASTCFLAGS)
Modified: team/oej/roibos-cng-support-1.8/main/astmm.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/main/astmm.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/main/astmm.c (original)
+++ team/oej/roibos-cng-support-1.8/main/astmm.c Fri Sep 21 08:17:39 2012
@@ -272,16 +272,17 @@
char *__ast_strndup(const char *s, size_t n, const char *file, int lineno, const char *func)
{
size_t len;
- void *ptr;
-
- if (!s)
- return NULL;
-
- len = strlen(s) + 1;
- if (len > n)
- len = n;
- if ((ptr = __ast_alloc_region(len, FUNC_STRNDUP, file, lineno, func, 0)))
- strcpy(ptr, s);
+ char *ptr;
+
+ if (!s) {
+ return NULL;
+ }
+
+ len = strnlen(s, n);
+ if ((ptr = __ast_alloc_region(len + 1, FUNC_STRNDUP, file, lineno, func, 0))) {
+ memcpy(ptr, s, len);
+ ptr[len] = '\0';
+ }
return ptr;
}
Modified: team/oej/roibos-cng-support-1.8/main/astobj2.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/main/astobj2.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/main/astobj2.c (original)
+++ team/oej/roibos-cng-support-1.8/main/astobj2.c Fri Sep 21 08:17:39 2012
@@ -207,7 +207,7 @@
*/
-int __ao2_ref_debug(void *user_data, const int delta, char *tag, char *file, int line, const char *funcname)
+int __ao2_ref_debug(void *user_data, const int delta, const char *tag, const char *file, int line, const char *funcname)
{
struct astobj2 *obj = INTERNAL_OBJ(user_data);
Modified: team/oej/roibos-cng-support-1.8/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/main/channel.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/main/channel.c (original)
+++ team/oej/roibos-cng-support-1.8/main/channel.c Fri Sep 21 08:17:39 2012
@@ -3515,7 +3515,6 @@
return ms;
}
-/* XXX never to be called with ms = -1 */
int ast_waitfordigit(struct ast_channel *c, int ms)
{
return ast_waitfordigit_full(c, ms, -1, -1);
@@ -3564,8 +3563,10 @@
return res;
}
-int ast_waitfordigit_full(struct ast_channel *c, int ms, int audiofd, int cmdfd)
-{
+int ast_waitfordigit_full(struct ast_channel *c, int timeout_ms, int audiofd, int cmdfd)
+{
+ struct timeval start = ast_tvnow();
+
/* Stop if we're a zombie or need a soft hangup */
if (ast_test_flag(c, AST_FLAG_ZOMBIE) || ast_check_hangup(c))
return -1;
@@ -3573,15 +3574,29 @@
/* Only look for the end of DTMF, don't bother with the beginning and don't emulate things */
ast_set_flag(c, AST_FLAG_END_DTMF_ONLY);
- /* Wait for a digit, no more than ms milliseconds total. */
-
- while (ms) {
+ /* Wait for a digit, no more than timeout_ms milliseconds total.
+ * Or, wait indefinitely if timeout_ms is <0.
+ */
+ while (ast_tvdiff_ms(ast_tvnow(), start) < timeout_ms || timeout_ms < 0) {
struct ast_channel *rchan;
int outfd=-1;
+ int ms;
+
+ if (timeout_ms < 0) {
+ ms = timeout_ms;
+ } else {
+ ms = timeout_ms - ast_tvdiff_ms(ast_tvnow(), start);
+ if (ms < 0) {
+ ms = 0;
+ }
+ }
errno = 0;
+ /* While ast_waitfor_nandfds tries to help by reducing the timeout by how much was waited,
+ * it is unhelpful if it waited less than a millisecond.
+ */
rchan = ast_waitfor_nandfds(&c, 1, &cmdfd, (cmdfd > -1) ? 1 : 0, NULL, &outfd, &ms);
-
+
if (!rchan && outfd < 0 && ms) {
if (errno == 0 || errno == EINTR)
continue;
@@ -6682,6 +6697,10 @@
/* Keep the same language. */
ast_string_field_set(original, language, clonechan->language);
+
+ /* Keep the same parkinglot. */
+ ast_string_field_set(original, parkinglot, clonechan->parkinglot);
+
/* Copy the FD's other than the generator fd */
for (x = 0; x < AST_MAX_FDS; x++) {
if (x != AST_GENERATOR_FD)
Modified: team/oej/roibos-cng-support-1.8/main/features.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/main/features.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/main/features.c (original)
+++ team/oej/roibos-cng-support-1.8/main/features.c Fri Sep 21 08:17:39 2012
@@ -945,6 +945,33 @@
struct ast_channel *transferee, const char *type, format_t format, void *data,
int timeout, int *outstate, const char *language);
+static const struct ast_datastore_info channel_app_data_datastore = {
+ .type = "Channel appdata datastore",
+ .destroy = ast_free_ptr,
+};
+
+static int set_chan_app_data(struct ast_channel *chan, const char *src_app_data)
+{
+ struct ast_datastore *datastore;
+ char *dst_app_data;
+
+ datastore = ast_datastore_alloc(&channel_app_data_datastore, NULL);
+ if (!datastore) {
+ return -1;
+ }
+
+ dst_app_data = ast_malloc(strlen(src_app_data) + 1);
+ if (!dst_app_data) {
+ ast_datastore_free(datastore);
+ return -1;
+ }
+
+ chan->data = strcpy(dst_app_data, src_app_data);
+ datastore->data = dst_app_data;
+ ast_channel_datastore_add(chan, datastore);
+ return 0;
+}
+
/*!
* \brief bridge the call
* \param data thread bridge.
@@ -958,9 +985,13 @@
struct ast_bridge_thread_obj *tobj = data;
tobj->chan->appl = !tobj->return_to_pbx ? "Transferred Call" : "ManagerBridge";
- tobj->chan->data = tobj->peer->name;
+ if (set_chan_app_data(tobj->chan, tobj->peer->name)) {
+ tobj->chan->data = "(Empty)";
+ }
tobj->peer->appl = !tobj->return_to_pbx ? "Transferred Call" : "ManagerBridge";
- tobj->peer->data = tobj->chan->name;
+ if (set_chan_app_data(tobj->peer, tobj->chan->name)) {
+ tobj->peer->data = "(Empty)";
+ }
ast_bridge_call(tobj->peer, tobj->chan, &tobj->bconfig);
Modified: team/oej/roibos-cng-support-1.8/main/manager.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/main/manager.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/main/manager.c (original)
+++ team/oej/roibos-cng-support-1.8/main/manager.c Fri Sep 21 08:17:39 2012
@@ -1790,6 +1790,10 @@
int x, l = strlen(var);
const char *result = "";
+ if (!m) {
+ return result;
+ }
+
for (x = 0; x < m->hdrcount; x++) {
const char *h = m->headers[x];
if (!strncasecmp(var, h, l) && h[l] == ':') {
Modified: team/oej/roibos-cng-support-1.8/main/ssl.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/main/ssl.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/main/ssl.c (original)
+++ team/oej/roibos-cng-support-1.8/main/ssl.c Fri Sep 21 08:17:39 2012
@@ -81,9 +81,7 @@
SSL_library_init();
SSL_load_error_strings();
- ERR_load_crypto_strings();
ERR_load_BIO_strings();
- OpenSSL_add_all_algorithms();
/* Make OpenSSL thread-safe. */
Modified: team/oej/roibos-cng-support-1.8/main/tcptls.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/main/tcptls.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/main/tcptls.c (original)
+++ team/oej/roibos-cng-support-1.8/main/tcptls.c Fri Sep 21 08:17:39 2012
@@ -82,6 +82,7 @@
{
int cookie_fd = SSL_get_fd(cookie);
int ret;
+
if (cookie_fd > -1) {
/*
* According to the TLS standard, it is acceptable for an application to only send its shutdown
@@ -91,6 +92,12 @@
if ((ret = SSL_shutdown(cookie)) < 0) {
ast_log(LOG_ERROR, "SSL_shutdown() failed: %d\n", SSL_get_error(cookie, ret));
}
+
+ if (!((SSL*)cookie)->server) {
+ /* For client threads, ensure that the error stack is cleared */
+ ERR_remove_state(0);
+ }
+
SSL_free(cookie);
/* adding shutdown(2) here has no added benefit */
if (close(cookie_fd)) {
@@ -313,9 +320,6 @@
if (!cfg->enabled)
return 0;
- SSL_load_error_strings();
- SSLeay_add_ssl_algorithms();
-
/* Get rid of an old SSL_CTX since we're about to
* allocate a new one
*/
@@ -357,7 +361,6 @@
if (!client) {
/* Clients don't need a certificate, but if its setup we can use it */
ast_verb(0, "SSL error loading cert file. <%s>", cfg->certfile);
- sleep(2);
cfg->enabled = 0;
SSL_CTX_free(cfg->ssl_ctx);
cfg->ssl_ctx = NULL;
@@ -368,7 +371,6 @@
if (!client) {
/* Clients don't need a private key, but if its setup we can use it */
ast_verb(0, "SSL error loading private key file. <%s>", tmpprivate);
- sleep(2);
cfg->enabled = 0;
SSL_CTX_free(cfg->ssl_ctx);
cfg->ssl_ctx = NULL;
@@ -380,7 +382,6 @@
if (SSL_CTX_set_cipher_list(cfg->ssl_ctx, cfg->cipher) == 0 ) {
if (!client) {
ast_verb(0, "SSL cipher error <%s>", cfg->cipher);
- sleep(2);
cfg->enabled = 0;
SSL_CTX_free(cfg->ssl_ctx);
cfg->ssl_ctx = NULL;
Modified: team/oej/roibos-cng-support-1.8/res/res_rtp_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/res/res_rtp_asterisk.c?view=diff&rev=373294&r1=373293&r2=373294
==============================================================================
--- team/oej/roibos-cng-support-1.8/res/res_rtp_asterisk.c (original)
+++ team/oej/roibos-cng-support-1.8/res/res_rtp_asterisk.c Fri Sep 21 08:17:39 2012
@@ -1587,8 +1587,9 @@
new_duration = (new_duration & ~0xFFFF) | samples;
if (event_end & 0x80) {
- /* End event */
- if ((rtp->last_seqno != seqno) && (timestamp > rtp->last_end_timestamp)) {
+ /* End event. Absorb re-transmits, and account for some endpoints
+ * that erroneously increment the timestamp during re-transmissions */
+ if ((seqno != rtp->last_seqno) && (timestamp > rtp->last_end_timestamp + 320)) {
rtp->last_end_timestamp = timestamp;
rtp->dtmf_duration = new_duration;
rtp->resp = resp;
@@ -1598,7 +1599,7 @@
rtp->dtmf_duration = rtp->dtmf_timeout = 0;
AST_LIST_INSERT_TAIL(frames, f, frame_list);
} else if (rtpdebug) {
- ast_debug(1, "Dropping duplicate or out of order DTMF END frame (seqno: %d, ts %d, digit %c)\n",
+ ast_debug(1, "Dropping re-transmitted, duplicate, or out of order DTMF END frame (seqno: %d, ts %d, digit %c)\n",
seqno, timestamp, resp);
}
} else {
More information about the asterisk-commits
mailing list