[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