Module: kamailio
Branch: master
Commit: 0d89dc5e3c4c06084af8aae03e9b705673289703
URL: 
https://github.com/kamailio/kamailio/commit/0d89dc5e3c4c06084af8aae03e9b705673289703

Author: Richard Fuchs <rfu...@sipwise.com>
Committer: Richard Fuchs <rfu...@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/0d89dc5e3c4c06084af8aae03e9b705673289703.diff
Patch: 
https://github.com/kamailio/kamailio/commit/0d89dc5e3c4c06084af8aae03e9b705673289703.patch

---

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;


_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to