Module: sip-router
Branch: master
Commit: c618a65e1941dc1ae259f97d264dd99a00aaf097
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c618a65e1941dc1ae259f97d264dd99a00aaf097

Author: Marius Zbihlei <[email protected]>
Committer: Marius Zbihlei <[email protected]>
Date:   Wed Apr 25 14:54:31 2012 +0300

modules/sipcapture: Fixed crash in case contact was "*"
(cherry picked from commit 11ca33836fdd33d7c3d36c4f1acc6c6782edfb5d)

---

 modules/sipcapture/sipcapture.c |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/modules/sipcapture/sipcapture.c b/modules/sipcapture/sipcapture.c
index 6905f85..ce7251d 100644
--- a/modules/sipcapture/sipcapture.c
+++ b/modules/sipcapture/sipcapture.c
@@ -188,7 +188,7 @@ static str type_column              = str_init("type");
 static str node_column                 = str_init("node");  
 static str msg_column          = str_init("msg");   
 static str capture_node        = str_init("homer01");          
-
+static str star_contact                = str_init("*");
 
 int raw_sock_desc = -1; /* raw socket used for ip packets */
 unsigned int raw_sock_children = 1;
@@ -1176,12 +1176,23 @@ static int sip_capture(struct sip_msg *msg, char *s1, 
char *s2)
 
               cb = (contact_body_t*)msg->contact->parsed;
 
-              if(cb && cb->contacts) {
-                  if(parse_uri( cb->contacts->uri.s, cb->contacts->uri.len, 
&contact)<0){
-                        LOG(L_ERR, "ERROR: do_action: bad contact dropping"" 
packet\n");
-                        return -1;
-                  }
-              }
+              if(cb) {
+                   if (cb->contacts) {
+                       if(parse_uri( cb->contacts->uri.s, 
cb->contacts->uri.len, &contact)<0){
+                               LOG(L_ERR, "ERROR: do_action: bad contact 
dropping"" packet\n");
+                               return -1;
+                       }
+                   } else {
+                       if(cb->star){ /* in the case Contact is "*" */
+                           memset(&contact, 0, sizeof(contact));
+                           contact.user.s =  star_contact.s;
+                           contact.user.len = star_contact.len;
+                       } else {
+                           LOG(L_NOTICE,"Invalid contact\n");
+                           memset(&contact, 0, sizeof(contact));
+                       }
+                   }
+           }
         }
 
        /* get header x-cid: */


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to