[sr-dev] git:andrei/blst_send_flags: tm: updated to the new snd_flags_t structure

Andrei Pelinescu-Onciul andrei at iptel.org
Wed Dec 23 13:42:55 CET 2009


Module: sip-router
Branch: andrei/blst_send_flags
Commit: 1d777cdcf8462e2dc0d104ec16c19bf1a5e782d0
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=1d777cdcf8462e2dc0d104ec16c19bf1a5e782d0

Author: Andrei Pelinescu-Onciul <andrei at iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei at iptel.org>
Date:   Thu Dec 17 13:29:50 2009 +0100

tm: updated to the new snd_flags_t structure

---

 modules/tm/t_fwd.c   |   14 +++++++++-----
 modules/tm/t_reply.c |    2 +-
 modules/tm/uac.c     |    8 +++++---
 modules/tm/ut.h      |   16 ++++++++++++----
 4 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/modules/tm/t_fwd.c b/modules/tm/t_fwd.c
index 1e9644d..af7ab47 100644
--- a/modules/tm/t_fwd.c
+++ b/modules/tm/t_fwd.c
@@ -659,8 +659,10 @@ static int add_uac( struct cell *t, struct sip_msg *request, str *uri,
 		t->uac[branch].request.dst.send_sock =
 		get_send_socket( request, &t->uac[branch].request.dst.to,
 								t->uac[branch].request.dst.proto);
-		t->uac[branch].request.dst.send_flags=request?
-												request->fwd_send_flags:0;
+		if (request)
+			t->uac[branch].request.dst.send_flags=request->fwd_send_flags;
+		else
+			SND_FLAGS_INIT(&t->uac[branch].request.dst.send_flags);
 		next_hop=0;
 	}else {
 		next_hop= next_hop?next_hop:uri;
@@ -845,7 +847,7 @@ int add_uac_dns_fallback(struct cell *t, struct sip_msg* msg,
 				 * in the rest of the message, only in the VIA HF (Miklos) */
 				ret=add_uac_from_buf(t,  msg, &old_uac->uri,
 							&old_uac->path,
-							 (old_uac->request.dst.send_flags &
+							 (old_uac->request.dst.send_flags.f &
 								SND_F_FORCE_SOCKET)?
 									old_uac->request.dst.send_sock:0,
 							old_uac->request.dst.send_flags,
@@ -858,7 +860,7 @@ int add_uac_dns_fallback(struct cell *t, struct sip_msg* msg,
 				 *  must be changed and the send_socket might be different =>
 				 *  re-create the whole uac */
 				ret=add_uac(t,  msg, &old_uac->uri, 0, &old_uac->path, 0,
-							 (old_uac->request.dst.send_flags &
+							 (old_uac->request.dst.send_flags.f &
 								SND_F_FORCE_SOCKET)?
 									old_uac->request.dst.send_sock:0,
 							old_uac->request.dst.send_flags,
@@ -883,6 +885,7 @@ int e2e_cancel_branch( struct sip_msg *cancel_msg, struct cell *t_cancel,
 	int ret;
 	char *shbuf;
 	unsigned int len;
+	snd_flags_t snd_flags;
 
 	ret=-1;
 	if (t_cancel->uac[branch].request.buffer) {
@@ -928,12 +931,13 @@ int e2e_cancel_branch( struct sip_msg *cancel_msg, struct cell *t_cancel,
 			cancel_msg->first_line.u.request.method.len+1;
 		t_cancel->uac[branch].uri.len=t_invite->uac[branch].uri.len;
 	} else {
+		SND_FLAGS_INIT(&snd_flags);
 		/* buffer is constructed from the received CANCEL with lumps applied */
 		/*  t_cancel...request.dst is already filled (see above) */
 		if (unlikely((ret=prepare_new_uac( t_cancel, cancel_msg, branch,
 									&t_invite->uac[branch].uri,
 									&t_invite->uac[branch].path,
-									0, 0, 0, PROTO_NONE, 0)) <0)){
+									0, 0, snd_flags, PROTO_NONE, 0)) <0)){
 			ser_error=ret;
 			goto error;
 		}
diff --git a/modules/tm/t_reply.c b/modules/tm/t_reply.c
index 8dbd1d6..3dbe519 100644
--- a/modules/tm/t_reply.c
+++ b/modules/tm/t_reply.c
@@ -1612,7 +1612,7 @@ enum rps relay_reply( struct cell *t, struct sip_msg *p_msg, int branch,
 				}
 				/* update send_flags with possible additions from the
 				   reply route */
-				uas_rb->dst.send_flags|=relayed_msg->rpl_send_flags;
+				uas_rb->dst.send_flags.f|=relayed_msg->rpl_send_flags.f;
 			}
 		}
 		update_reply_stats( relayed_code );
diff --git a/modules/tm/uac.c b/modules/tm/uac.c
index 7565763..da30b0d 100644
--- a/modules/tm/uac.c
+++ b/modules/tm/uac.c
@@ -215,6 +215,7 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 	int sflag_bk;
 	int backup_route_type;
 #endif
+	snd_flags_t snd_flags;
 
 	ret=-1;
 	hi=0; /* make gcc happy */
@@ -239,10 +240,11 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 			uac_r->dialog->hooks.next_hop->s);
 	/* new message => take the dialog send_socket if set, or the default
 	  send_socket if not*/
+	SND_FLAGS_INIT(&snd_flags);
 #ifdef USE_DNS_FAILOVER
 	if (cfg_get(core, core_cfg, use_dns_failover)){
 		dns_srv_handle_init(&dns_h);
-		if ((uri2dst2(&dns_h, &dst, uac_r->dialog->send_sock, 0,
+		if ((uri2dst2(&dns_h, &dst, uac_r->dialog->send_sock, snd_flags,
 							uac_r->dialog->hooks.next_hop, PROTO_NONE)==0)
 				|| (dst.send_sock==0)){
 			dns_srv_handle_put(&dns_h);
@@ -253,7 +255,7 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 		}
 		dns_srv_handle_put(&dns_h); /* not needed anymore */
 	}else{
-		if ((uri2dst2(0, &dst, uac_r->dialog->send_sock, 0,
+		if ((uri2dst2(0, &dst, uac_r->dialog->send_sock, snd_flags,
 						uac_r->dialog->hooks.next_hop, PROTO_NONE)==0) ||
 				(dst.send_sock==0)){
 			ser_error = E_NO_SOCKET;
@@ -263,7 +265,7 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 		}
 	}
 #else /* USE_DNS_FAILOVER */
-	if ((uri2dst2(&dst, uac_r->dialog->send_sock, 0,
+	if ((uri2dst2(&dst, uac_r->dialog->send_sock, snd_flags,
 					uac_r->dialog->hooks.next_hop, PROTO_NONE)==0) ||
 			(dst.send_sock==0)){
 		ser_error = E_NO_SOCKET;
diff --git a/modules/tm/ut.h b/modules/tm/ut.h
index e0cabcf..fff774b 100644
--- a/modules/tm/ut.h
+++ b/modules/tm/ut.h
@@ -356,16 +356,24 @@ inline static struct dest_info *uri2dst(struct dns_srv_handle* dns_h,
 										struct sip_msg *msg, str *uri, 
 											int proto )
 {
-	return uri2dst2(dns_h, dst, msg?msg->force_send_socket:0,
-						msg?msg->fwd_send_flags:0, uri, proto);
+	snd_flags_t sflags;
+	if (msg)
+		return uri2dst2(dns_h, dst, msg->force_send_socket,
+							msg->fwd_send_flags, uri, proto);
+	SND_FLAGS_INIT(&sflags);
+	return uri2dst2(dns_h, dst, 0, sflags, uri, proto);
 }
 #else
 inline static struct dest_info *uri2dst(struct dest_info* dst,
 										struct sip_msg *msg, str *uri, 
 											int proto )
 {
-	return uri2dst2(dst, msg?msg->force_send_socket:0,
-						msg?msg->fwd_send_flags:0, uri, proto);
+	snd_flags_t sflags;
+	if (msg)
+		return uri2dst2(dst, msg->force_send_socket, msg->fwd_send_flags,
+						uri, proto);
+	SND_FLAGS_INIT(&sflags);
+	return uri2dst2(dst, 0, sflags, uri, proto);
 }
 #endif /* USE_DNS_FAILOVER */
 




More information about the sr-dev mailing list