Module: kamailio Branch: master Commit: 0d89dc5e3c4c06084af8aae03e9b705673289703 URL: https://github.com/kamailio/kamailio/commit/0d89dc5e3c4c06084af8aae03e9b7056...
Author: Richard Fuchs rfuchs@sipwise.com Committer: Richard Fuchs rfuchs@sipwise.com Date: 2018-03-02T08:34:55-05:00
rtpengine: allow dual usage of DTLS flag and DTLS= switch
fixes regression from ff209e978
fixes #1468
---
Modified: src/modules/rtpengine/rtpengine.c
---
Diff: https://github.com/kamailio/kamailio/commit/0d89dc5e3c4c06084af8aae03e9b7056... Patch: https://github.com/kamailio/kamailio/commit/0d89dc5e3c4c06084af8aae03e9b7056...
---
diff --git a/src/modules/rtpengine/rtpengine.c b/src/modules/rtpengine/rtpengine.c index 927558f437..df26234504 100644 --- a/src/modules/rtpengine/rtpengine.c +++ b/src/modules/rtpengine/rtpengine.c @@ -1943,29 +1943,27 @@ static int parse_flags(struct ng_flags_parse *ng_flags, struct sip_msg *msg, enu /* check for specially handled items */ switch (key.len) { case 3: - if (str_eq(&key, "RTP")) { + if (str_eq(&key, "RTP") && !val.s) { ng_flags->transport |= 0x100; ng_flags->transport &= ~0x001; } - else if (str_eq(&key, "AVP")) { + else if (str_eq(&key, "AVP") && !val.s) { ng_flags->transport |= 0x100; ng_flags->transport &= ~0x002; } else if (str_eq(&key, "TOS") && val.s) bencode_dictionary_add_integer(ng_flags->dict, "TOS", atoi(val.s)); - else if (str_eq(&key, "delete-delay") && val.s) - bencode_dictionary_add_integer(ng_flags->dict, "delete delay", atoi(val.s)); else goto generic; goto next; break;
case 4: - if (str_eq(&key, "SRTP")) + if (str_eq(&key, "SRTP") && !val.s) ng_flags->transport |= 0x101; - else if (str_eq(&key, "AVPF")) + else if (str_eq(&key, "AVPF") && !val.s) ng_flags->transport |= 0x102; - else if (str_eq(&key, "DTLS")) + else if (str_eq(&key, "DTLS") && !val.s) ng_flags->transport |= 0x104; else goto generic; @@ -1982,7 +1980,7 @@ static int parse_flags(struct ng_flags_parse *ng_flags, struct sip_msg *msg, enu break;
case 7: - if (str_eq(&key, "RTP/AVP")) + if (str_eq(&key, "RTP/AVP") && !val.s) ng_flags->transport = 0x100; else if (str_eq(&key, "call-id")) { err = "missing value"; @@ -1998,9 +1996,9 @@ static int parse_flags(struct ng_flags_parse *ng_flags, struct sip_msg *msg, enu case 8: if (str_eq(&key, "internal") || str_eq(&key, "external")) bencode_list_add_str(ng_flags->direction, &key); - else if (str_eq(&key, "RTP/AVPF")) + else if (str_eq(&key, "RTP/AVPF") && !val.s) ng_flags->transport = 0x102; - else if (str_eq(&key, "RTP/SAVP")) + else if (str_eq(&key, "RTP/SAVP") && !val.s) ng_flags->transport = 0x101; else if (str_eq(&key, "from-tag")) { err = "missing value"; @@ -2014,7 +2012,7 @@ static int parse_flags(struct ng_flags_parse *ng_flags, struct sip_msg *msg, enu break;
case 9: - if (str_eq(&key, "RTP/SAVPF")) + if (str_eq(&key, "RTP/SAVPF") && !val.s) ng_flags->transport = 0x103; else if (str_eq(&key, "direction")) bencode_list_add_str(ng_flags->direction, &val); @@ -2068,10 +2066,12 @@ static int parse_flags(struct ng_flags_parse *ng_flags, struct sip_msg *msg, enu *op = OP_ANSWER; goto next; } + else if (str_eq(&key, "delete-delay") && val.s) + bencode_dictionary_add_integer(ng_flags->dict, "delete delay", atoi(val.s)); break;
case 16: - if (str_eq(&key, "UDP/TLS/RTP/SAVP")) + if (str_eq(&key, "UDP/TLS/RTP/SAVP") && !val.s) ng_flags->transport = 0x104; else goto generic; @@ -2079,7 +2079,7 @@ static int parse_flags(struct ng_flags_parse *ng_flags, struct sip_msg *msg, enu break;
case 17: - if (str_eq(&key, "UDP/TLS/RTP/SAVPF")) + if (str_eq(&key, "UDP/TLS/RTP/SAVPF") && !val.s) ng_flags->transport = 0x106; else goto generic;