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

Author: Carsten Bock <[email protected]>
Committer: Carsten Bock <[email protected]>
Date:   Tue Jun 10 12:22:03 2014 +0200

ims_registrar_pcscf: Bugfix: Update Received Info, when updating contact (it 
may have changed)

---

 modules/ims_registrar_pcscf/save.c |   46 ++++++++++++++++++------------------
 1 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/modules/ims_registrar_pcscf/save.c 
b/modules/ims_registrar_pcscf/save.c
index 2843278..4a625a7 100644
--- a/modules/ims_registrar_pcscf/save.c
+++ b/modules/ims_registrar_pcscf/save.c
@@ -156,6 +156,29 @@ static inline int update_contacts(struct sip_msg 
*req,struct sip_msg *rpl, udoma
                                ci.received_port = 0;
                                ci.received_proto = 0;
 
+                               // Received Info: First try AVP, otherwise 
simply take the source of the request:
+                               memset(&val, 0, sizeof(int_str));
+                               if (rcv_avp_name.n!=0 && 
search_first_avp(rcv_avp_type, rcv_avp_name, &val, 0) && val.s.len > 0) {
+                                       if (val.s.len>RECEIVED_MAX_SIZE) {
+                                               LM_ERR("received too long\n");
+                                               goto error;
+                                       }
+                                       if (parse_uri(val.s.s, val.s.len, 
&parsed_received) < 0) {
+                                               LM_DBG("Error parsing Received 
URI <%.*s>\n", val.s.len, val.s.s);
+                                               continue;
+                                       }
+                                       ci.received_host = parsed_received.host;
+                                       ci.received_port = 
parsed_received.port_no;
+                                       ci.received_proto = 
parsed_received.proto;
+                               } else {
+                                       ci.received_host.len = 
ip_addr2sbuf(&req->rcv.src_ip, srcip, sizeof(srcip));
+                                       ci.received_host.s = srcip;
+                                       ci.received_port = req->rcv.src_port;
+                                       ci.received_proto = req->rcv.proto;
+                               }
+                               // Set to default, if not set:
+                               if (ci.received_port == 0) ci.received_port = 
5060;
+
                                ul.lock_udomain(_d, &c->uri);
                                if (ul.get_pcontact(_d, &c->uri, &pcontact) != 
0) { //need to insert new contact
                                        if ((expires-local_time_now)<=0) { 
//remove contact - de-register
@@ -165,29 +188,6 @@ static inline int update_contacts(struct sip_msg 
*req,struct sip_msg *rpl, udoma
                                    
                                        LM_DBG("Adding pcontact: <%.*s>, 
expires: %d which is in %d seconds\n", c->uri.len, c->uri.s, expires, 
expires-local_time_now);
 
-                                       // Received Info: First try AVP, 
otherwise simply take the source of the request:
-                                       memset(&val, 0, sizeof(int_str));
-                                       if (rcv_avp_name.n!=0 && 
search_first_avp(rcv_avp_type, rcv_avp_name, &val, 0) && val.s.len > 0) {
-                                               if 
(val.s.len>RECEIVED_MAX_SIZE) {
-                                                       LM_ERR("received too 
long\n");
-                                                       goto error;
-                                               }
-                                               if (parse_uri(val.s.s, 
val.s.len, &parsed_received) < 0) {
-                                                       LM_DBG("Error parsing 
Received URI <%.*s>\n", val.s.len, val.s.s);
-                                                       continue;
-                                               }
-                                               ci.received_host = 
parsed_received.host;
-                                               ci.received_port = 
parsed_received.port_no;
-                                               ci.received_proto = 
parsed_received.proto;
-                                       } else {
-                                               ci.received_host.len = 
ip_addr2sbuf(&req->rcv.src_ip, srcip, sizeof(srcip));
-                                               ci.received_host.s = srcip;
-                                               ci.received_port = 
req->rcv.src_port;
-                                               ci.received_proto = 
req->rcv.proto;
-                                       }
-                                       // Set to default, if not set:
-                                       if (ci.received_port == 0) 
ci.received_port = 5060;
-
                                        if (ul.insert_pcontact(_d, &c->uri, 
&ci, &pcontact) != 0) {
                                                LM_ERR("Failed inserting new 
pcontact\n");
                                        } else {


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

Reply via email to