[asterisk-commits] oej: branch oej/teapot-1.8 r402109 - in /team/oej/teapot-1.8: ./ apps/ build_...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Oct 28 09:10:57 CDT 2013
Author: oej
Date: Mon Oct 28 09:10:54 2013
New Revision: 402109
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=402109
Log:
- Resetting
- Adding custom cause codes for testing
Modified:
team/oej/teapot-1.8/ (props changed)
team/oej/teapot-1.8/apps/app_meetme.c
team/oej/teapot-1.8/apps/app_queue.c
team/oej/teapot-1.8/build_tools/prep_tarball
team/oej/teapot-1.8/channels/chan_dahdi.c
team/oej/teapot-1.8/channels/chan_iax2.c
team/oej/teapot-1.8/channels/chan_sip.c
team/oej/teapot-1.8/channels/sig_ss7.c
team/oej/teapot-1.8/channels/sip/include/sip.h
team/oej/teapot-1.8/channels/sip/reqresp_parser.c
team/oej/teapot-1.8/configs/chan_dahdi.conf.sample
team/oej/teapot-1.8/configure
team/oej/teapot-1.8/configure.ac
team/oej/teapot-1.8/include/asterisk/causes.h
team/oej/teapot-1.8/main/abstract_jb.c
team/oej/teapot-1.8/main/astobj2.c
team/oej/teapot-1.8/main/channel.c
team/oej/teapot-1.8/main/features.c
team/oej/teapot-1.8/res/res_musiconhold.c
team/oej/teapot-1.8/res/res_rtp_asterisk.c
Propchange: team/oej/teapot-1.8/
------------------------------------------------------------------------------
automerge = Is-there-life-off-net?
Propchange: team/oej/teapot-1.8/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Oct 28 09:10:54 2013
@@ -1,1 +1,1 @@
-/branches/1.8:1-398790
+/branches/1.8:1-400136
Modified: team/oej/teapot-1.8/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/apps/app_meetme.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/apps/app_meetme.c (original)
+++ team/oej/teapot-1.8/apps/app_meetme.c Mon Oct 28 09:10:54 2013
@@ -4838,6 +4838,23 @@
res = -2;
goto usernotfound;
}
+ } else {
+ /* fail for commands that require a user */
+ switch (*args.command) {
+ case 'm': /* Unmute */
+ case 'M': /* Mute */
+ case 't': /* Lower user's talk volume */
+ case 'T': /* Raise user's talk volume */
+ case 'u': /* Lower user's listen volume */
+ case 'U': /* Raise user's listen volume */
+ case 'r': /* Reset user's volume level */
+ case 'k': /* Kick user */
+ res = -2;
+ ast_log(LOG_NOTICE, "No user specified!\n");
+ goto usernotfound;
+ default:
+ break;
+ }
}
switch (*args.command) {
@@ -4853,21 +4870,24 @@
case 101: /* e: Eject last user*/
{
int max_no = 0;
-
- /* If they passed in a user, disregard it */
- if (user) {
- ao2_ref(user, -1);
- }
+ struct ast_conf_user *eject_user;
ao2_callback(cnf->usercontainer, OBJ_NODATA, user_max_cmp, &max_no);
- user = ao2_find(cnf->usercontainer, &max_no, 0);
- if (!ast_test_flag64(&user->userflags, CONFFLAG_ADMIN))
- user->adminflags |= ADMINFLAG_KICKME;
- else {
+ eject_user = ao2_find(cnf->usercontainer, &max_no, 0);
+ if (!eject_user) {
+ res = -1;
+ ast_log(LOG_NOTICE, "No last user to kick!\n");
+ break;
+ }
+
+ if (!ast_test_flag64(&eject_user->userflags, CONFFLAG_ADMIN)) {
+ eject_user->adminflags |= ADMINFLAG_KICKME;
+ } else {
res = -1;
ast_log(LOG_NOTICE, "Not kicking last user, is an Admin!\n");
}
- ao2_ref(user, -1);
+
+ ao2_ref(eject_user, -1);
break;
}
case 77: /* M: Mute */
Modified: team/oej/teapot-1.8/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/apps/app_queue.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/apps/app_queue.c (original)
+++ team/oej/teapot-1.8/apps/app_queue.c Mon Oct 28 09:10:54 2013
@@ -7950,8 +7950,8 @@
case CLI_INIT:
e->command = "queue add member";
e->usage =
- "Usage: queue add member <channel> to <queue> [[[penalty <penalty>] as <membername>] state_interface <interface>]\n"
- " Add a channel to a queue with optionally: a penalty, membername and a state_interface\n";
+ "Usage: queue add member <dial string> to <queue> [[[penalty <penalty>] as <membername>] state_interface <interface>]\n"
+ " Add a dial string (Such as a channel,e.g. SIP/6001) to a queue with optionally: a penalty, membername and a state_interface\n";
return NULL;
case CLI_GENERATE:
return complete_queue_add_member(a->line, a->word, a->pos, a->n);
Modified: team/oej/teapot-1.8/build_tools/prep_tarball
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/build_tools/prep_tarball?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/build_tools/prep_tarball (original)
+++ team/oej/teapot-1.8/build_tools/prep_tarball Mon Oct 28 09:10:54 2013
@@ -19,11 +19,11 @@
cd doc
echo "Downloading the PDF and HTML documentation from the Asterisk wiki (this will take a minute) ..."
-wget https://wiki.asterisk.org/wiki/download/attachments/19005471/Asterisk-Admin-Guide-$branch.pdf
+wget https://wiki.asterisk.org/wiki/download/attachments/19005471/Asterisk-$branch-Reference.pdf
+wget https://wiki.asterisk.org/wiki/download/attachments/19005471/Asterisk-Admin-Guide.pdf
wget https://wiki.asterisk.org/wiki/download/attachments/19005471/Asterisk-Admin-Guide-$branch.html.zip
echo "Extracting HTML Admin Guide"
unzip Asterisk-Admin-Guide-$branch.html.zip
mv AST/ Asterisk-Admin-Guide/
-mv Asterisk-Admin-Guide-$branch.pdf Asterisk-Admin-Guide.pdf
rm -f Asterisk-Admin-Guide-$branch.html.zip
echo "Documentation downloaded. Goodbye!"
Modified: team/oej/teapot-1.8/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/channels/chan_dahdi.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/channels/chan_dahdi.c (original)
+++ team/oej/teapot-1.8/channels/chan_dahdi.c Mon Oct 28 09:10:54 2013
@@ -16722,8 +16722,10 @@
#ifdef HAVE_PRI
for (i = 0; i < NUM_SPANS; i++) {
- if (pris[i].pri.master != AST_PTHREADT_NULL)
+ if (pris[i].pri.master != AST_PTHREADT_NULL) {
pthread_cancel(pris[i].pri.master);
+ pthread_kill(pris[i].pri.master, SIGURG);
+ }
}
ast_cli_unregister_multiple(dahdi_pri_cli, ARRAY_LEN(dahdi_pri_cli));
ast_unregister_application(dahdi_send_keypad_facility_app);
@@ -16733,9 +16735,11 @@
#endif
#if defined(HAVE_SS7)
for (i = 0; i < NUM_SPANS; i++) {
- if (linksets[i].ss7.master != AST_PTHREADT_NULL)
+ if (linksets[i].ss7.master != AST_PTHREADT_NULL) {
pthread_cancel(linksets[i].ss7.master);
- }
+ pthread_kill(linksets[i].ss7.master, SIGURG);
+ }
+ }
ast_cli_unregister_multiple(dahdi_ss7_cli, ARRAY_LEN(dahdi_ss7_cli));
#endif /* defined(HAVE_SS7) */
#if defined(HAVE_OPENR2)
@@ -16776,8 +16780,9 @@
#if defined(HAVE_PRI)
for (i = 0; i < NUM_SPANS; i++) {
- if (pris[i].pri.master && (pris[i].pri.master != AST_PTHREADT_NULL))
+ if (pris[i].pri.master && (pris[i].pri.master != AST_PTHREADT_NULL)) {
pthread_join(pris[i].pri.master, NULL);
+ }
for (j = 0; j < SIG_PRI_NUM_DCHANS; j++) {
dahdi_close_pri_fd(&(pris[i]), j);
}
@@ -16792,8 +16797,9 @@
#if defined(HAVE_SS7)
for (i = 0; i < NUM_SPANS; i++) {
- if (linksets[i].ss7.master && (linksets[i].ss7.master != AST_PTHREADT_NULL))
+ if (linksets[i].ss7.master && (linksets[i].ss7.master != AST_PTHREADT_NULL)) {
pthread_join(linksets[i].ss7.master, NULL);
+ }
for (j = 0; j < SIG_SS7_NUM_DCHANS; j++) {
dahdi_close_ss7_fd(&(linksets[i]), j);
}
Modified: team/oej/teapot-1.8/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/channels/chan_iax2.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/channels/chan_iax2.c (original)
+++ team/oej/teapot-1.8/channels/chan_iax2.c Mon Oct 28 09:10:54 2013
@@ -5593,31 +5593,42 @@
res = AST_BRIDGE_COMPLETE;
break;
}
- if ((f->frametype == AST_FRAME_CONTROL) && !(flags & AST_BRIDGE_IGNORE_SIGS) && (f->subclass.integer != AST_CONTROL_SRCUPDATE)) {
- *fo = f;
- *rc = who;
- res = AST_BRIDGE_COMPLETE;
- break;
- }
other = (who == c0) ? c1 : c0; /* the 'other' channel */
- if ((f->frametype == AST_FRAME_VOICE) ||
- (f->frametype == AST_FRAME_TEXT) ||
- (f->frametype == AST_FRAME_VIDEO) ||
- (f->frametype == AST_FRAME_IMAGE) ||
- (f->frametype == AST_FRAME_DTMF) ||
- (f->frametype == AST_FRAME_CONTROL)) {
+ if (f->frametype == AST_FRAME_CONTROL && !(flags & AST_BRIDGE_IGNORE_SIGS)) {
+ switch (f->subclass.integer) {
+ case AST_CONTROL_VIDUPDATE:
+ case AST_CONTROL_SRCUPDATE:
+ case AST_CONTROL_SRCCHANGE:
+ case AST_CONTROL_T38_PARAMETERS:
+ ast_write(other, f);
+ break;
+ default:
+ *fo = f;
+ *rc = who;
+ res = AST_BRIDGE_COMPLETE;
+ break;
+ }
+ if (res == AST_BRIDGE_COMPLETE) {
+ break;
+ }
+ } else if (f->frametype == AST_FRAME_VOICE
+ || f->frametype == AST_FRAME_TEXT
+ || f->frametype == AST_FRAME_VIDEO
+ || f->frametype == AST_FRAME_IMAGE) {
+ ast_write(other, f);
+ } else if (f->frametype == AST_FRAME_DTMF) {
/* monitored dtmf take out of the bridge.
* check if we monitor the specific source.
*/
int monitored_source = (who == c0) ? AST_BRIDGE_DTMF_CHANNEL_0 : AST_BRIDGE_DTMF_CHANNEL_1;
- if (f->frametype == AST_FRAME_DTMF && (flags & monitored_source)) {
+
+ if (flags & monitored_source) {
*rc = who;
*fo = f;
res = AST_BRIDGE_COMPLETE;
/* Remove from native mode */
break;
}
- /* everything else goes to the other side */
ast_write(other, f);
}
ast_frfree(f);
@@ -8761,6 +8772,22 @@
}
}
+ /* treat an unspecified refresh interval as the minimum */
+ if (!refresh) {
+ refresh = min_reg_expire;
+ }
+ if (refresh > max_reg_expire) {
+ ast_log(LOG_NOTICE, "Restricting registration for peer '%s' to %d seconds (requested %d)\n",
+ p->name, max_reg_expire, refresh);
+ p->expiry = max_reg_expire;
+ } else if (refresh < min_reg_expire) {
+ ast_log(LOG_NOTICE, "Restricting registration for peer '%s' to %d seconds (requested %d)\n",
+ p->name, min_reg_expire, refresh);
+ p->expiry = min_reg_expire;
+ } else {
+ p->expiry = refresh;
+ }
+
if (ast_sockaddr_cmp(&p->addr, &sockaddr)) {
if (iax2_regfunk) {
iax2_regfunk(p->name, 1);
@@ -8813,20 +8840,7 @@
peer_unref(p);
}
}
- /* treat an unspecified refresh interval as the minimum */
- if (!refresh)
- refresh = min_reg_expire;
- if (refresh > max_reg_expire) {
- ast_log(LOG_NOTICE, "Restricting registration for peer '%s' to %d seconds (requested %d)\n",
- p->name, max_reg_expire, refresh);
- p->expiry = max_reg_expire;
- } else if (refresh < min_reg_expire) {
- ast_log(LOG_NOTICE, "Restricting registration for peer '%s' to %d seconds (requested %d)\n",
- p->name, min_reg_expire, refresh);
- p->expiry = min_reg_expire;
- } else {
- p->expiry = refresh;
- }
+
if (p->expiry && sin->sin_addr.s_addr) {
p->expire = iax2_sched_add(sched, (p->expiry + 10) * 1000, expire_registry, peer_ref(p));
if (p->expire == -1)
Modified: team/oej/teapot-1.8/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/channels/chan_sip.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/channels/chan_sip.c (original)
+++ team/oej/teapot-1.8/channels/chan_sip.c Mon Oct 28 09:10:54 2013
@@ -11929,13 +11929,9 @@
/* Our T.38 end is */
ast_udptl_get_us(p->udptl, &udptladdr);
- /* Determine T.38 UDPTL destination */
- if (!ast_sockaddr_isnull(&p->udptlredirip)) {
- ast_sockaddr_copy(&udptldest, &p->udptlredirip);
- } else {
- ast_sockaddr_copy(&udptldest, &p->ourip);
- ast_sockaddr_set_port(&udptldest, ast_sockaddr_port(&udptladdr));
- }
+ /* We don't use directmedia for T.38, so keep the destination the same as our IP address. */
+ ast_sockaddr_copy(&udptldest, &p->ourip);
+ ast_sockaddr_set_port(&udptldest, ast_sockaddr_port(&udptladdr));
if (debug) {
ast_debug(1, "T.38 UDPTL is at %s port %d\n", ast_sockaddr_stringify_addr(&p->ourip), ast_sockaddr_port(&udptladdr));
@@ -11946,9 +11942,9 @@
ast_str_append(&m_modem, 0, "m=image %d udptl t38\r\n", ast_sockaddr_port(&udptldest));
- if (!ast_sockaddr_cmp(&udptldest, &dest)) {
+ if (ast_sockaddr_cmp(&udptldest, &dest)) {
ast_str_append(&m_modem, 0, "c=IN %s %s\r\n",
- (ast_sockaddr_is_ipv6(&dest) && !ast_sockaddr_is_ipv4_mapped(&dest)) ?
+ (ast_sockaddr_is_ipv6(&udptldest) && !ast_sockaddr_is_ipv4_mapped(&udptldest)) ?
"IP6" : "IP4", ast_sockaddr_stringify_addr_remote(&udptldest));
}
@@ -14546,6 +14542,14 @@
}
}
+ if (expire > max_expiry) {
+ expire = max_expiry;
+ }
+ if (expire < min_expiry && expire != 0) {
+ expire = min_expiry;
+ }
+ pvt->expiry = expire;
+
copy_socket_data(&pvt->socket, &req->socket);
do {
@@ -14684,12 +14688,6 @@
AST_SCHED_DEL_UNREF(sched, peer->expire,
unref_peer(peer, "remove register expire ref"));
- if (expire > max_expiry) {
- expire = max_expiry;
- }
- if (expire < min_expiry) {
- expire = min_expiry;
- }
if (peer->is_realtime && !ast_test_flag(&peer->flags[1], SIP_PAGE2_RTCACHEFRIENDS)) {
peer->expire = -1;
} else {
@@ -14699,7 +14697,6 @@
unref_peer(peer, "remote registration ref");
}
}
- pvt->expiry = expire;
snprintf(data, sizeof(data), "%s:%d:%s:%s", ast_sockaddr_stringify(&peer->addr),
expire, peer->username, peer->fullcontact);
/* We might not immediately be able to reconnect via TCP, but try caching it anyhow */
@@ -15462,7 +15459,10 @@
break;
case PARSE_REGISTER_UPDATE:
ast_string_field_set(p, fullcontact, peer->fullcontact);
- update_peer(peer, p->expiry);
+ /* If expiry is 0, peer has been unregistered already */
+ if (p->expiry != 0) {
+ update_peer(peer, p->expiry);
+ }
/* Say OK and ask subsystem to retransmit msg counter */
transmit_response_with_date(p, "200 OK", req);
send_mwi = 1;
@@ -16765,9 +16765,9 @@
int sipmethod, const char *uri, enum xmittype reliable,
struct ast_sockaddr *addr, struct sip_peer **authpeer)
{
- char from[256] = "", *of, *name, *unused_password, *domain;
+ char from[256], *of, *name, *unused_password, *domain;
enum check_auth_result res = AUTH_DONT_KNOW;
- char calleridname[50];
+ char calleridname[256];
char *uri2 = ast_strdupa(uri);
terminate_uri(uri2); /* trim extra stuff */
@@ -20963,6 +20963,15 @@
ast_set_flag(&p->flags[0], SIP_PENDINGBYE);
}
ast_rtp_instance_activate(p->rtp);
+ } else if (!reinvite) {
+ struct ast_sockaddr remote_address = {{0,}};
+
+ ast_rtp_instance_get_remote_address(p->rtp, &remote_address);
+ if (ast_sockaddr_isnull(&remote_address) || (!ast_strlen_zero(p->theirprovtag) && strcmp(p->theirtag, p->theirprovtag))) {
+ ast_log(LOG_WARNING, "Received response: \"200 OK\" from '%s' without SDP\n", p->relatedpeer->name);
+ ast_set_flag(&p->flags[0], SIP_PENDINGBYE);
+ ast_rtp_instance_activate(p->rtp);
+ }
}
if (!req->ignore && p->owner) {
@@ -21824,8 +21833,15 @@
so that we don't update the tag after a 200 or other final response.
Provided that SIP pedantic checking is turned on of course.
*/
- gettag(req, "To", tag, sizeof(tag));
- ast_string_field_set(p, theirtag, tag);
+ if (ast_strlen_zero(p->theirtag) || (resp >= 200)) {
+ char tag[128];
+
+ gettag(req, "To", tag, sizeof(tag));
+ ast_string_field_set(p, theirtag, tag);
+ } else {
+ /* Store theirtag to track for changes when 200 responses to invites are received without SDP */
+ ast_string_field_set(p, theirprovtag, p->theirtag);
+ }
/* This needs to be configurable on a channel/peer level,
not mandatory for all communication. Sadly enough, NAT implementations
Modified: team/oej/teapot-1.8/channels/sig_ss7.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/channels/sig_ss7.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/channels/sig_ss7.c (original)
+++ team/oej/teapot-1.8/channels/sig_ss7.c Mon Oct 28 09:10:54 2013
@@ -714,7 +714,9 @@
struct sig_ss7_chan *p;
int chanpos;
struct pollfd pollers[SIG_SS7_NUM_DCHANS];
- int nextms = 0;
+ int nextms;
+
+#define SS7_MAX_POLL 60000 /* Maximum poll time in ms. */
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
@@ -739,6 +741,11 @@
}
nextms = tv.tv_sec * 1000;
nextms += tv.tv_usec / 1000;
+ if (SS7_MAX_POLL < nextms) {
+ nextms = SS7_MAX_POLL;
+ }
+ } else {
+ nextms = SS7_MAX_POLL;
}
for (i = 0; i < linkset->numsigchans; i++) {
Modified: team/oej/teapot-1.8/channels/sip/include/sip.h
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/channels/sip/include/sip.h?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/channels/sip/include/sip.h (original)
+++ team/oej/teapot-1.8/channels/sip/include/sip.h Mon Oct 28 09:10:54 2013
@@ -981,6 +981,7 @@
AST_STRING_FIELD(theirtag); /*!< Their tag */
AST_STRING_FIELD(theirtag_prack); /*!< Current tag focus for PRACK handling */
AST_STRING_FIELD(theirtag_early); /*!< Current tag focus for early media handling */
+ AST_STRING_FIELD(theirprovtag); /*!< Provisional their tag, used when evaluating responses to invites */
AST_STRING_FIELD(tag); /*!< Our tag for this session */
AST_STRING_FIELD(username); /*!< [user] name */
AST_STRING_FIELD(peername); /*!< [peer] name, not set if [user] */
Modified: team/oej/teapot-1.8/channels/sip/reqresp_parser.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/channels/sip/reqresp_parser.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/channels/sip/reqresp_parser.c (original)
+++ team/oej/teapot-1.8/channels/sip/reqresp_parser.c Mon Oct 28 09:10:54 2013
@@ -806,7 +806,7 @@
int get_name_and_number(const char *hdr, char **name, char **number)
{
char header[256];
- char tmp_name[50];
+ char tmp_name[256];
char *tmp_number = NULL;
char *hostport = NULL;
char *dummy = NULL;
Modified: team/oej/teapot-1.8/configs/chan_dahdi.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/configs/chan_dahdi.conf.sample?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/configs/chan_dahdi.conf.sample (original)
+++ team/oej/teapot-1.8/configs/chan_dahdi.conf.sample Mon Oct 28 09:10:54 2013
@@ -503,7 +503,8 @@
; easily be re-attaching to a prior incoming call that was not yet hung up).
; This option changes the hangup to wait for a dialtone on the line, before
; marking the line as once again available for use with outgoing calls.
-;waitfordialtone=yes
+; Specified in milliseconds, not set by default.
+;waitfordialtone=1000
;
; The following option enables receiving MWI on FXO lines. The default
; value is no.
Modified: team/oej/teapot-1.8/configure.ac
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/configure.ac?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/configure.ac (original)
+++ team/oej/teapot-1.8/configure.ac Mon Oct 28 09:10:54 2013
@@ -1129,6 +1129,11 @@
AST_EXT_LIB_CHECK([BFD], [bfd], [bfd_check_format], [bfd.h], [-ldl -liberty])
fi
+if test "${PBX_BFD}" = "0"; then
+ # openSUSE requires -lz
+ AST_EXT_LIB_CHECK([BFD], [bfd], [bfd_check_format], [bfd.h], [-ldl -liberty -lz])
+fi
+
if test "x${OSARCH}" = "xlinux-gnu" ; then
AST_EXT_LIB_CHECK([CAP], [cap], [cap_from_text], [sys/capability.h])
fi
Modified: team/oej/teapot-1.8/include/asterisk/causes.h
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/include/asterisk/causes.h?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/include/asterisk/causes.h (original)
+++ team/oej/teapot-1.8/include/asterisk/causes.h Mon Oct 28 09:10:54 2013
@@ -142,6 +142,11 @@
#define AST_CAUSE_RECOVERY_ON_TIMER_EXPIRE 102
#define AST_CAUSE_MANDATORY_IE_LENGTH_ERROR 103
#define AST_CAUSE_PROTOCOL_ERROR 111
+#define AST_CAUSE_CUSTOM1 115
+#define AST_CAUSE_CUSTOM2 116
+#define AST_CAUSE_CUSTOM3 117
+#define AST_CAUSE_CUSTOM4 118
+#define AST_CAUSE_CUSTOM5 119
#define AST_CAUSE_INTERWORKING 127
/* Special Asterisk aliases */
Modified: team/oej/teapot-1.8/main/abstract_jb.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/main/abstract_jb.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/main/abstract_jb.c (original)
+++ team/oej/teapot-1.8/main/abstract_jb.c Mon Oct 28 09:10:54 2013
@@ -488,7 +488,7 @@
char safe_logfile[30] = "/tmp/logfile-XXXXXX";
int safe_fd;
snprintf(name2, sizeof(name2), "%s", chan->name);
- if ((tmp = strchr(name2, '/'))) {
+ while ((tmp = strchr(name2, '/'))) {
*tmp = '#';
}
@@ -497,7 +497,7 @@
ast_assert(bridged != NULL);
snprintf(name1, sizeof(name1), "%s", bridged->name);
- if ((tmp = strchr(name1, '/'))) {
+ while ((tmp = strchr(name1, '/'))) {
*tmp = '#';
}
Modified: team/oej/teapot-1.8/main/astobj2.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/main/astobj2.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/main/astobj2.c (original)
+++ team/oej/teapot-1.8/main/astobj2.c Mon Oct 28 09:10:54 2013
@@ -441,7 +441,7 @@
/* compute the container size */
const unsigned int num_buckets = hash_fn ? n_buckets : 1;
size_t container_size = sizeof(struct ao2_container) + num_buckets * sizeof(struct bucket);
- struct ao2_container *c = __ao2_alloc_debug(container_size, container_destruct_debug, tag, file, line, funcname, ref_debug);
+ struct ao2_container *c = __ao2_alloc_debug(container_size, ref_debug ? container_destruct_debug : container_destruct, tag, file, line, funcname, ref_debug);
return internal_ao2_container_alloc(c, num_buckets, hash_fn, cmp_fn);
}
Modified: team/oej/teapot-1.8/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/main/channel.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/main/channel.c (original)
+++ team/oej/teapot-1.8/main/channel.c Mon Oct 28 09:10:54 2013
@@ -256,6 +256,11 @@
{ AST_CAUSE_MANDATORY_IE_LENGTH_ERROR, "MANDATORY_IE_LENGTH_ERROR", "Mandatory IE length error" },
{ AST_CAUSE_PROTOCOL_ERROR, "PROTOCOL_ERROR", "Protocol error, unspecified" },
{ AST_CAUSE_INTERWORKING, "INTERWORKING", "Interworking, unspecified" },
+ { AST_CAUSE_CUSTOM1, "CUSTOM1", "Custom cause code 1" },
+ { AST_CAUSE_CUSTOM2, "CUSTOM2", "Custom cause code 2" },
+ { AST_CAUSE_CUSTOM3, "CUSTOM3", "Custom cause code 3" },
+ { AST_CAUSE_CUSTOM4, "CUSTOM4", "Custom cause code 4" },
+ { AST_CAUSE_CUSTOM5, "CUSTOM5", "Custom cause code 5" },
};
struct ast_variable *ast_channeltype_list(void)
Modified: team/oej/teapot-1.8/main/features.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/main/features.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/main/features.c (original)
+++ team/oej/teapot-1.8/main/features.c Mon Oct 28 09:10:54 2013
@@ -5754,19 +5754,9 @@
);
AST_STANDARD_APP_ARGS(args, tmp_val);
- if ((new_syn = strchr(args.app, '('))) {
- /* New syntax */
- args.moh_class = args.app_args;
- args.app_args = new_syn;
- *args.app_args++ = '\0';
- if (args.app_args[strlen(args.app_args) - 1] == ')') {
- args.app_args[strlen(args.app_args) - 1] = '\0';
- }
- }
activateon = strsep(&args.activatedby, "/");
- /*! \todo XXX var_name or app_args ? */
if (ast_strlen_zero(args.app)
|| ast_strlen_zero(args.exten)
|| ast_strlen_zero(activateon)
@@ -5777,6 +5767,16 @@
return;
}
+ if ((new_syn = strchr(args.app, '('))) {
+ /* New syntax */
+ args.moh_class = args.app_args;
+ args.app_args = new_syn;
+ *args.app_args++ = '\0';
+ if (args.app_args[strlen(args.app_args) - 1] == ')') {
+ args.app_args[strlen(args.app_args) - 1] = '\0';
+ }
+ }
+
AST_RWLIST_RDLOCK(&feature_list);
if (find_dynamic_feature(var->name)) {
AST_RWLIST_UNLOCK(&feature_list);
Modified: team/oej/teapot-1.8/res/res_musiconhold.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/res/res_musiconhold.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/res/res_musiconhold.c (original)
+++ team/oej/teapot-1.8/res/res_musiconhold.c Mon Oct 28 09:10:54 2013
@@ -232,8 +232,9 @@
#define mohclass_unref(class,string) _mohclass_unref(class, string, __FILE__,__LINE__,__PRETTY_FUNCTION__)
static struct mohclass *_mohclass_unref(struct mohclass *class, const char *tag, const char *file, int line, const char *funcname)
{
- struct mohclass *dup;
- if ((dup = ao2_find(mohclasses, class, OBJ_POINTER))) {
+ struct mohclass *dup = ao2_callback(mohclasses, OBJ_POINTER, ao2_match_by_addr, class);
+
+ if (dup) {
if (__ao2_ref_debug(dup, -1, (char *) tag, (char *) file, line, funcname) == 2) {
FILE *ref = fopen("/tmp/refs", "a");
if (ref) {
@@ -246,7 +247,7 @@
ao2_ref(class, -1);
}
} else {
- ao2_t_ref(class, -1, (char *) tag);
+ __ao2_ref_debug(class, -1, (char *) tag, (char *) file, line, funcname);
}
return NULL;
}
Modified: team/oej/teapot-1.8/res/res_rtp_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/res/res_rtp_asterisk.c?view=diff&rev=402109&r1=402108&r2=402109
==============================================================================
--- team/oej/teapot-1.8/res/res_rtp_asterisk.c (original)
+++ team/oej/teapot-1.8/res/res_rtp_asterisk.c Mon Oct 28 09:10:54 2013
@@ -2279,6 +2279,12 @@
f = ast_frisolate(&srcupdate);
AST_LIST_INSERT_TAIL(&frames, f, frame_list);
+ rtp->seedrxseqno = 0;
+ rtp->rxcount = 0;
+ rtp->cycles = 0;
+ rtp->lastrxseqno = 0;
+ rtp->rtcp->expected_prior = 0;
+ rtp->rtcp->received_prior = 0;
rtp->last_seqno = 0;
rtp->last_end_timestamp = 0;
}
More information about the asterisk-commits
mailing list