# HG changeset patch # User Mychaela Falconia # Date 1662537016 28800 # Node ID daf1c26d7ae2b6a0dc677ee96b3970e0b7989021 # Parent dec31b1a8b965ec4c54feb35b4b2f6e3866238cc sip-in: check INVITE Content-Type header diff -r dec31b1a8b96 -r daf1c26d7ae2 sip-in/invite.c --- a/sip-in/invite.c Tue Sep 06 22:57:16 2022 -0800 +++ b/sip-in/invite.c Tue Sep 06 23:50:16 2022 -0800 @@ -18,6 +18,8 @@ extern int cfg_use_100rel; +extern char *get_single_header(); + void handle_sip_invite(req, ess, sin) struct sip_pkt_rx *req; @@ -27,7 +29,7 @@ char uri_user[13], *called_nanp; struct sip_msg_out resp; struct supported_ext supp_ext; - char *unsup_ext; + char *hval, *unsup_ext; int ext_100rel_req, ext_100rel_sup, use_100rel; int rc; @@ -92,6 +94,24 @@ use_100rel = cfg_use_100rel; else use_100rel = 0; + /* did the caller send an SDP message body? */ + if (!req->msg_body_len) { + start_response_out_msg(&resp, "415 Missing SDP body"); +error_415: rc = out_msg_add_header(&resp, "Accept", "application/sdp"); + if (rc < 0) + goto error_resp_toolong; + goto error_resp; + } + hval = get_single_header(req, "Content-Type", "c", (int *) 0); + if (!hval) { + start_response_out_msg(&resp, + "415 Missing Content-Type header"); + goto error_415; + } + if (strcasecmp(hval, "application/sdp")) { + start_response_out_msg(&resp, "415 Unsupported Content-Type"); + goto error_415; + } /* * Remaining checks to be implemented: * SDP message body