Module: kamailio Branch: master Commit: 6208d8a0e31fa03ca24bc2fd63093607d235dbbd URL: https://github.com/kamailio/kamailio/commit/6208d8a0e31fa03ca24bc2fd63093607...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2021-09-17T08:22:09+02:00
core: receive - check for required headers before routing blocks
---
Modified: src/core/receive.c
---
Diff: https://github.com/kamailio/kamailio/commit/6208d8a0e31fa03ca24bc2fd63093607... Patch: https://github.com/kamailio/kamailio/commit/6208d8a0e31fa03ca24bc2fd63093607...
---
diff --git a/src/core/receive.c b/src/core/receive.c index f3b31fefbc..b3e6aee8b8 100644 --- a/src/core/receive.c +++ b/src/core/receive.c @@ -421,9 +421,13 @@ int receive_msg(char *buf, unsigned int len, receive_info_t *rcv_info) if(msg->first_line.type == SIP_REQUEST) { ruri_mark_new(); /* ruri is usable for forking (not consumed yet) */ if(!IS_SIP(msg)) { + LM_DBG("handling non-sip request message\n"); if((ret = nonsip_msg_run_hooks(msg)) != NONSIP_MSG_ACCEPT) { - if(unlikely(ret == NONSIP_MSG_ERROR)) + if(unlikely(ret == NONSIP_MSG_ERROR)) { + LM_DBG("failed handling non-sip request message\n"); goto error03; + } + LM_DBG("finished handling non-sip request message\n"); goto end; /* drop the message */ } } @@ -435,6 +439,14 @@ int receive_msg(char *buf, unsigned int len, receive_info_t *rcv_info) STATS_BAD_MSG(); goto error02; } + if(unlikely((msg->callid == 0) || (msg->cseq == 0) || (msg->from == 0) + || (msg->to == 0))) { + /* no required headers -- send back error ? */ + LOG(cfg_get(core, core_cfg, sip_parser_log), + "required headers not found in request\n"); + STATS_BAD_MSG(); + goto error02; + } /* check if necessary to add receive?->moved to forward_req */ /* check for the alias stuff */ #ifdef USE_TCP @@ -526,6 +538,14 @@ int receive_msg(char *buf, unsigned int len, receive_info_t *rcv_info) STATS_BAD_RPL(); goto error02; } + if(unlikely((msg->callid == 0) || (msg->cseq == 0) || (msg->from == 0) + || (msg->to == 0))) { + /* no required headers -- send back error ? */ + LOG(cfg_get(core, core_cfg, sip_parser_log), + "required headers not found in reply\n"); + STATS_BAD_RPL(); + goto error02; + }
if(exectime) { gettimeofday(&tvb, NULL);