Author: oej Date: Mon Jan 19 08:13:47 2015 New Revision: 430759 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=430759 Log: Adding patch to respond to messages missing from tag and with weird methods and such.
We should always try to respond if possible, not just drop a request Added: team/oej/teapot-1.8/patches/sensha-handle-unknown-sip-messages-1.8.diff (with props) Modified: team/oej/teapot-1.8/channels/chan_sip.c team/oej/teapot-1.8/res/res_rtp_asterisk.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=430759&r1=430758&r2=430759 ============================================================================== --- team/oej/teapot-1.8/channels/chan_sip.c (original) +++ team/oej/teapot-1.8/channels/chan_sip.c Mon Jan 19 08:13:47 2015 @@ -8435,12 +8435,24 @@ /* All messages must always have From: tag */ if (ast_strlen_zero(fromtag)) { ast_debug(5, "%s request has no from tag, dropping callid: %s from: %s\n", sip_methods[req->method].text , callid, from ); + /* Try to respond nevertheless */ + transmit_response_using_temp(callid, addr, 1, intended_method, + req, "400 Bad Request"); return NULL; } /* reject requests that must always have a To: tag */ - if (ast_strlen_zero(totag) && (req->method == SIP_ACK || req->method == SIP_BYE || req->method == SIP_INFO )) { - ast_debug(5, "%s must have a to tag. dropping callid: %s from: %s\n", sip_methods[req->method].text , callid, from ); - return NULL; + if (ast_strlen_zero(totag)) { + if (req->method == SIP_ACK) { + ast_debug(5, "%s must have a to tag. dropping callid: %s from: %s\n", sip_methods[req->method].text , callid, from ); + return NULL; + } + if (req->method == SIP_BYE || req->method == SIP_INFO ) { + /* We have to respond */ + ast_debug(5, "%s must have a to tag. dropping callid: %s from: %s\n", sip_methods[req->method].text , callid, from ); + transmit_response_using_temp(callid, addr, 1, intended_method, + req, "400 Bad Request"); + return NULL; + } } } @@ -8517,6 +8529,7 @@ free_via(via); } /* end of pedantic mode Request/Reponse to Dialog matching */ + /* See if the method is capable of creating a dialog */ if (sip_methods[intended_method].can_create == CAN_CREATE_DIALOG) { Added: team/oej/teapot-1.8/patches/sensha-handle-unknown-sip-messages-1.8.diff URL: http://svnview.digium.com/svn/asterisk/team/oej/teapot-1.8/patches/sensha-handle-unknown-sip-messages-1.8.diff?view=auto&rev=430759 ============================================================================== --- team/oej/teapot-1.8/patches/sensha-handle-unknown-sip-messages-1.8.diff (added) +++ team/oej/teapot-1.8/patches/sensha-handle-unknown-sip-messages-1.8.diff Mon Jan 19 08:13:47 2015 @@ -1,0 +1,41 @@ +Index: channels/chan_sip.c +=================================================================== +--- channels/chan_sip.c (.../branches/1.8) (revision 430758) ++++ channels/chan_sip.c (.../team/oej/sensha-handle-unknown-sip-messages-1.8) (revision 430758) +@@ -8419,12 +8419,24 @@ + /* All messages must always have From: tag */ + if (ast_strlen_zero(fromtag)) { + ast_debug(5, "%s request has no from tag, dropping callid: %s from: %s\n", sip_methods[req->method].text , callid, from ); ++ /* Try to respond nevertheless */ ++ transmit_response_using_temp(callid, addr, 1, intended_method, ++ req, "400 Bad Request"); + return NULL; + } + /* reject requests that must always have a To: tag */ +- if (ast_strlen_zero(totag) && (req->method == SIP_ACK || req->method == SIP_BYE || req->method == SIP_INFO )) { +- ast_debug(5, "%s must have a to tag. dropping callid: %s from: %s\n", sip_methods[req->method].text , callid, from ); +- return NULL; ++ if (ast_strlen_zero(totag)) { ++ if (req->method == SIP_ACK) { ++ ast_debug(5, "%s must have a to tag. dropping callid: %s from: %s\n", sip_methods[req->method].text , callid, from ); ++ return NULL; ++ } ++ if (req->method == SIP_BYE || req->method == SIP_INFO ) { ++ /* We have to respond */ ++ ast_debug(5, "%s must have a to tag. dropping callid: %s from: %s\n", sip_methods[req->method].text , callid, from ); ++ transmit_response_using_temp(callid, addr, 1, intended_method, ++ req, "400 Bad Request"); ++ return NULL; ++ } + } + } + +@@ -8502,6 +8514,7 @@ + free_via(via); + } /* end of pedantic mode Request/Reponse to Dialog matching */ + ++ + /* See if the method is capable of creating a dialog */ + if (sip_methods[intended_method].can_create == CAN_CREATE_DIALOG) { + struct sip_pvt *p = NULL; + Propchange: team/oej/teapot-1.8/patches/sensha-handle-unknown-sip-messages-1.8.diff ------------------------------------------------------------------------------ svn:eol-style = native Propchange: team/oej/teapot-1.8/patches/sensha-handle-unknown-sip-messages-1.8.diff ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Propchange: team/oej/teapot-1.8/patches/sensha-handle-unknown-sip-messages-1.8.diff ------------------------------------------------------------------------------ svn:mime-type = text/plain 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=430759&r1=430758&r2=430759 ============================================================================== --- team/oej/teapot-1.8/res/res_rtp_asterisk.c (original) +++ team/oej/teapot-1.8/res/res_rtp_asterisk.c Mon Jan 19 08:13:47 2015 @@ -3394,7 +3394,7 @@ } else if (rtp_debug_test_addr(&remote_address)) { ast_verbose("Sent Comfort Noise RTP packet to %s (type %-2.2d, seq %-6.6d, ts %-6.6u, len %-6.6d)\n", ast_sockaddr_stringify(&remote_address), - AST_RTP_CN, rtp->seqno, rtp->lastdigitts, res - hdrlen); + payload, rtp->seqno, rtp->lastdigitts, res - hdrlen); } rtp->seqno++; -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits