summaryrefslogtreecommitdiff
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
authorDavid Vossel <dvossel@digium.com>2010-09-21 18:33:18 +0000
committerDavid Vossel <dvossel@digium.com>2010-09-21 18:33:18 +0000
commit08aeb74d7a1d9ab3715bfe10cb77aa4c0842b0cc (patch)
treee1288b54d93e05309d006bbfea7fdfb8b666ea7e /channels/chan_sip.c
parente86c254b7943db7e70672ea614b02b0abaead38c (diff)
Merged revisions 287929 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r287929 | dvossel | 2010-09-21 13:32:12 -0500 (Tue, 21 Sep 2010) | 4 lines Send a "415 Unsupported Media Type" after failure to process sdp due to unknown Content-Encoding header. ABE-2258 ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@287930 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r--channels/chan_sip.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 5c833b71e..a19930e59 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -21157,7 +21157,14 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int
/* Handle SDP here if we already have an owner */
if (find_sdp(req)) {
if (process_sdp(p, req, SDP_T38_INITIATE)) {
- transmit_response_reliable(p, "488 Not acceptable here", req);
+ if (!ast_strlen_zero(get_header(req, "Content-Encoding"))) {
+ /* Asterisk does not yet support any Content-Encoding methods. Always
+ * attempt to process the sdp, but return a 415 if a Content-Encoding header
+ * was present after processing failed. */
+ transmit_response_reliable(p, "415 Unsupported Media type", req);
+ } else {
+ transmit_response_reliable(p, "488 Not acceptable here", req);
+ }
if (!p->lastinvite)
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
res = -1;
@@ -21222,8 +21229,15 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int
/* We have a successful authentication, process the SDP portion if there is one */
if (find_sdp(req)) {
if (process_sdp(p, req, SDP_T38_INITIATE)) {
- /* Unacceptable codecs */
- transmit_response_reliable(p, "488 Not acceptable here", req);
+ /* Asterisk does not yet support any Content-Encoding methods. Always
+ * attempt to process the sdp, but return a 415 if a Content-Encoding header
+ * was present after processing fails. */
+ if (!ast_strlen_zero(get_header(req, "Content-Encoding"))) {
+ transmit_response_reliable(p, "415 Unsupported Media type", req);
+ } else {
+ /* Unacceptable codecs */
+ transmit_response_reliable(p, "488 Not acceptable here", req);
+ }
p->invitestate = INV_COMPLETED;
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
ast_debug(1, "No compatible codecs for this SIP call.\n");