[asterisk-commits] oej: branch oej/teapot-1.8 r402883 - in /team/oej/teapot-1.8: channels/ patches/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Nov 18 09:39:21 CST 2013


Author: oej
Date: Mon Nov 18 09:39:17 2013
New Revision: 402883

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=402883
Log:
Trying to fix 480 handling properly. We need to use hangup_sip2cause for that too.

Added:
    team/oej/teapot-1.8/patches/cloudberry-480-unavailable-1.8.diff   (with props)
    team/oej/teapot-1.8/patches/ignore-mki-index.diff   (with props)
    team/oej/teapot-1.8/patches/totag-fix.txt   (with props)
Modified:
    team/oej/teapot-1.8/channels/chan_sip.c

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=402883&r1=402882&r2=402883
==============================================================================
--- team/oej/teapot-1.8/channels/chan_sip.c (original)
+++ team/oej/teapot-1.8/channels/chan_sip.c Mon Nov 18 09:39:17 2013
@@ -21268,14 +21268,23 @@
 	case 408: /* Request timeout */
 	case 405: /* Not allowed */
 	case 501: /* Not implemented */
+	case 480: /* Temporarily Unavailable */
+	case 482: /* Loop Detected */
+	case 410: /* Gone */
+	case 400: /* Bad Request */
+	case 500: /* Server error */
+	case 502: /* Bad gateway */
+	case 503: /* Service Unavailable */
 		xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
 		if (p->owner) {
 			ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
 		}
 		break;
-	}
-	if (xmitres == XMIT_ERROR)
+
+	}
+	if (xmitres == XMIT_ERROR) {
 		ast_log(LOG_WARNING, "Could not transmit message in dialog %s\n", p->callid);
+	}
 }
 
 /* \brief Handle SIP response in NOTIFY transaction
@@ -22178,8 +22187,12 @@
 				case 502: /* Bad gateway */
 				case 503: /* Service Unavailable */
 				case 504: /* Server Timeout */
-					if (owner)
-						ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
+					if (sipmethod == SIP_INVITE) {
+						handle_response_invite(p, resp, rest, req, seqno);
+					} else {
+						if (owner)
+							ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
+					}
 					break;
 				case 484: /* Address Incomplete */
 					if (owner && sipmethod != SIP_BYE) {

Added: team/oej/teapot-1.8/patches/cloudberry-480-unavailable-1.8.diff
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/patches/cloudberry-480-unavailable-1.8.diff?view=auto&rev=402883
==============================================================================
--- team/oej/teapot-1.8/patches/cloudberry-480-unavailable-1.8.diff (added)
+++ team/oej/teapot-1.8/patches/cloudberry-480-unavailable-1.8.diff Mon Nov 18 09:39:17 2013
@@ -1,0 +1,44 @@
+Index: channels/chan_sip.c
+===================================================================
+--- channels/chan_sip.c	(.../branches/1.8)	(revision 402882)
++++ channels/chan_sip.c	(.../team/oej/cloudberry-480-unavailable-1.8)	(revision 402882)
+@@ -21204,14 +21204,23 @@
+ 	case 408: /* Request timeout */
+ 	case 405: /* Not allowed */
+ 	case 501: /* Not implemented */
++	case 480: /* Temporarily Unavailable */
++	case 482: /* Loop Detected */
++	case 410: /* Gone */
++	case 400: /* Bad Request */
++	case 500: /* Server error */
++	case 502: /* Bad gateway */
++	case 503: /* Service Unavailable */
+ 		xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
+ 		if (p->owner) {
+ 			ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
+ 		}
+ 		break;
++
+ 	}
+-	if (xmitres == XMIT_ERROR)
++	if (xmitres == XMIT_ERROR) {
+ 		ast_log(LOG_WARNING, "Could not transmit message in dialog %s\n", p->callid);
++	}
+ }
+ 
+ /* \brief Handle SIP response in NOTIFY transaction
+@@ -22060,8 +22069,12 @@
+ 				case 502: /* Bad gateway */
+ 				case 503: /* Service Unavailable */
+ 				case 504: /* Server Timeout */
+-					if (owner)
+-						ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
++					if (sipmethod == SIP_INVITE) {
++						handle_response_invite(p, resp, rest, req, seqno);
++					} else {
++						if (owner)
++							ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
++					}
+ 					break;
+ 				case 484: /* Address Incomplete */
+ 					if (owner && sipmethod != SIP_BYE) {

Propchange: team/oej/teapot-1.8/patches/cloudberry-480-unavailable-1.8.diff
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/oej/teapot-1.8/patches/cloudberry-480-unavailable-1.8.diff
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/oej/teapot-1.8/patches/cloudberry-480-unavailable-1.8.diff
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: team/oej/teapot-1.8/patches/ignore-mki-index.diff
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/patches/ignore-mki-index.diff?view=auto&rev=402883
==============================================================================
--- team/oej/teapot-1.8/patches/ignore-mki-index.diff (added)
+++ team/oej/teapot-1.8/patches/ignore-mki-index.diff Mon Nov 18 09:39:17 2013
@@ -1,0 +1,15 @@
+Index: channels/sip/sdp_crypto.c
+===================================================================
+--- channels/sip/sdp_crypto.c	(revision 402877)
++++ channels/sip/sdp_crypto.c	(working copy)
+@@ -295,7 +295,9 @@
+ 					mki = strsep(&info, "|");
+ 				}
+ 				/* At this point we do not support multiple keys, sorry */
+-				if (mki != NULL && *mki != '1') {
++				//if (mki != NULL && *mki != '1') {
++				//If there's an MKI, give up.
++				if (mki != NULL) {
+ 					ast_log(LOG_ERROR, "Crypto mki handling not implemented. MKI = %s \n", mki);
+ 					continue;
+ 				}

Propchange: team/oej/teapot-1.8/patches/ignore-mki-index.diff
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/oej/teapot-1.8/patches/ignore-mki-index.diff
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/oej/teapot-1.8/patches/ignore-mki-index.diff
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: team/oej/teapot-1.8/patches/totag-fix.txt
URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/patches/totag-fix.txt?view=auto&rev=402883
==============================================================================
--- team/oej/teapot-1.8/patches/totag-fix.txt (added)
+++ team/oej/teapot-1.8/patches/totag-fix.txt Mon Nov 18 09:39:17 2013
@@ -1,0 +1,19 @@
+Index: channels/chan_sip.c
+===================================================================
+--- channels/chan_sip.c	(revision 402874)
++++ channels/chan_sip.c	(working copy)
+@@ -21811,8 +21811,12 @@
+ 		p->pendinginvite = 0;
+ 	}
+ 
+-	/* Get their tag if we haven't already */
+-	if (ast_strlen_zero(p->theirtag) || (resp >= 200)) {
++	/* Get their tag if we haven't already 
++	   If the dialog is established, we need to lock on to the to-tag. Before that,
++	   we can change and just use the latest one. Otherwise forking won't really
++	   work. Or, well, it doesn't work, but we are responding to the wrong
++	   fork. */
++	if (! ast_test_flag(&p->flags[1], SIP_PAGE2_DIALOG_ESTABLISHED)) {
+ 		char tag[128];
+ 
+ 		gettag(req, "To", tag, sizeof(tag));

Propchange: team/oej/teapot-1.8/patches/totag-fix.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/oej/teapot-1.8/patches/totag-fix.txt
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/oej/teapot-1.8/patches/totag-fix.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the asterisk-commits mailing list