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

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date:   Mon May 26 14:16:49 2014 +0200

core: option to specify whether the send info has to be set before sending out

---

 forward.c |   19 +++++++++++++++++++
 forward.h |    2 ++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/forward.c b/forward.c
index 81a0e1d..a03ba5e 100644
--- a/forward.c
+++ b/forward.c
@@ -121,6 +121,12 @@
 static int mhomed_sock_cache_disabled = 0;
 static int sock_inet = -1;
 static int sock_inet6 = -1;
+static int _forward_set_send_info = 0;
+
+void forward_set_send_info(int v)
+{
+       _forward_set_send_info = v;
+}
 
 static void apply_force_send_socket(struct dest_info* dst, struct sip_msg* 
msg);
 
@@ -497,6 +503,7 @@ int forward_request(struct sip_msg* msg, str* dst, unsigned 
short port,
        int ret;
        struct ip_addr ip; /* debugging only */
        char proto;
+       struct onsend_info onsnd_info = {0};
 #ifdef USE_DNS_FAILOVER
        struct socket_info* prev_send_sock;
        int err;
@@ -623,7 +630,18 @@ int forward_request(struct sip_msg* msg, str* dst, 
unsigned short port,
                        }
                }
 #endif
+
+               if(unlikely(_forward_set_send_info==1)) {
+                       onsnd_info.to=&send_info->to;
+                       onsnd_info.send_sock=send_info->send_sock;
+                       onsnd_info.buf=buf;
+                       onsnd_info.len=len;
+                       onsnd_info.msg=msg;
+                       p_onsend=&onsnd_info;
+               }
+
                if (msg_send(send_info, buf, len)<0){
+                       p_onsend=0;
                        ret=ser_error=E_SEND;
 #ifdef USE_DST_BLACKLIST
                        (void)dst_blacklist_add(BLST_ERR_SEND, send_info, msg);
@@ -634,6 +652,7 @@ int forward_request(struct sip_msg* msg, str* dst, unsigned 
short port,
                        goto error;
 #endif
                }else{
+                       p_onsend=0;
                        ret=ser_error=E_OK;
                        /* sent requests stats */
                        STATS_TX_REQUEST(  
msg->first_line.u.request.method_value );
diff --git a/forward.h b/forward.h
index f377546..98dc70e 100644
--- a/forward.h
+++ b/forward.h
@@ -109,6 +109,8 @@ int update_sock_struct_from_via( union sockaddr_union* to,
 int forward_reply( struct sip_msg* msg);
 int forward_reply_nocb( struct sip_msg* msg);
 
+void forward_set_send_info(int v);
+
 int is_check_self_func_list_set(void);
 
 


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

Reply via email to