[sr-dev] git:pd/outbound: modules_k/rr: outbound fixes

Peter Dunkley peter.dunkley at crocodile-rcs.com
Tue Jan 1 21:46:23 CET 2013


Module: sip-router
Branch: pd/outbound
Commit: 0a528b23bc39eabfaaf2874a74ce529955c21ff5
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=0a528b23bc39eabfaaf2874a74ce529955c21ff5

Author: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Date:   Tue Jan  1 20:45:49 2013 +0000

modules_k/rr: outbound fixes

- Use the OUTBOUND address in RR when using outbound

---

 modules_k/rr/record.c |   31 +++++++++++++++++--------------
 1 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/modules_k/rr/record.c b/modules_k/rr/record.c
index 394f0a1..9ed8953 100644
--- a/modules_k/rr/record.c
+++ b/modules_k/rr/record.c
@@ -281,6 +281,7 @@ int record_route(struct sip_msg* _m, str *params)
 	str user;
 	struct to_body* from = NULL;
 	str* tag;
+	int use_ob = rr_obb.use_outbound ? rr_obb.use_outbound(_m) : 0;
 	
 	user.len = 0;
 	
@@ -289,7 +290,7 @@ int record_route(struct sip_msg* _m, str *params)
 			LM_ERR("failed to extract username\n");
 			return -1;
 		}
-	} else if (rr_obb.use_outbound && rr_obb.use_outbound(_m)) {
+	} else if (use_ob) {
 		if (rr_obb.encode_flow_token(&user, _m->rcv) != 0) {
 			LM_ERR("encoding outbound flow-token\n");
 			return -1;
@@ -312,7 +313,7 @@ int record_route(struct sip_msg* _m, str *params)
 		rr_param_buf.len = 0;
 	}
 
-	if (enable_double_rr && !(rr_obb.use_outbound && rr_obb.use_outbound(_m))) {
+	if (enable_double_rr && !use_ob) {
 		l = anchor_lump(_m, _m->headers->name.s - _m->buf,0,HDR_RECORDROUTE_T);
 		l2 = anchor_lump(_m, _m->headers->name.s - _m->buf, 0, 0);
 		if (!l || !l2) {
@@ -325,8 +326,7 @@ int record_route(struct sip_msg* _m, str *params)
 			LM_ERR("failed to insert conditional lump\n");
 			return -6;
 		}
-		if (build_rr(l, l2, &user, tag, params, OUTBOUND,
-			rr_obb.use_outbound ? rr_obb.use_outbound(_m) : 0) < 0) {
+		if (build_rr(l, l2, &user, tag, params, OUTBOUND, 0) < 0) {
 			LM_ERR("failed to insert outbound Record-Route\n");
 			return -7;
 		}
@@ -339,8 +339,8 @@ int record_route(struct sip_msg* _m, str *params)
 		return -3;
 	}
 	
-	if (build_rr(l, l2, &user, tag, params, INBOUND,
-		rr_obb.use_outbound ? rr_obb.use_outbound(_m) : 0) < 0) {
+	if (build_rr(l, l2, &user, tag, params, use_ob ? OUTBOUND : INBOUND,
+			use_ob) < 0) {
 		LM_ERR("failed to insert inbound Record-Route\n");
 		return -4;
 	}
@@ -368,7 +368,8 @@ int record_route_preset(struct sip_msg* _m, str* _data)
 	struct lump* l;
 	char* hdr, *p;
 	int hdr_len;
-
+	int use_ob = rr_obb.use_outbound ? rr_obb.use_outbound(_m) : 0;
+	
 	from = 0;
 	user.len = 0;
 	user.s = 0;
@@ -378,7 +379,7 @@ int record_route_preset(struct sip_msg* _m, str* _data)
 			LM_ERR("failed to extract username\n");
 			return -1;
 		}
-	} else if (rr_obb.use_outbound && rr_obb.use_outbound(_m)) {
+	} else if (use_ob) {
 		if (rr_obb.encode_flow_token(&user, _m->rcv) != 0) {
 			LM_ERR("encoding outbound flow-token\n");
 			return -1;
@@ -591,7 +592,8 @@ int record_route_advertised_address(struct sip_msg* _m, str* _data)
 	str *tag = NULL;
 	struct lump* l;
 	struct lump* l2;
-
+	int use_ob = rr_obb.use_outbound ? rr_obb.use_outbound(_m) : 0;
+	
 	user.len = 0;
 	user.s = 0;
 
@@ -600,7 +602,7 @@ int record_route_advertised_address(struct sip_msg* _m, str* _data)
 			LM_ERR("failed to extract username\n");
 			return -1;
 		}
-	} else if (rr_obb.use_outbound && rr_obb.use_outbound(_m)) {
+	} else if (use_ob) {
 		if (rr_obb.encode_flow_token(&user, _m->rcv) != 0) {
 			LM_ERR("encoding outbound flow-token\n");
 			return -1;
@@ -615,7 +617,7 @@ int record_route_advertised_address(struct sip_msg* _m, str* _data)
 		tag = &((struct to_body*)_m->from->parsed)->tag_value;
 	}
 
-	if (enable_double_rr && !(rr_obb.use_outbound && rr_obb.use_outbound(_m))) {
+	if (enable_double_rr && !use_ob) {
 		l = anchor_lump(_m, _m->headers->name.s - _m->buf,0,HDR_RECORDROUTE_T);
 		l2 = anchor_lump(_m, _m->headers->name.s - _m->buf, 0, 0);
 		if (!l || !l2) {
@@ -629,7 +631,7 @@ int record_route_advertised_address(struct sip_msg* _m, str* _data)
 			return -4;
 		}
 		if (build_advertised_rr(l, l2, _data, &user, tag, OUTBOUND,
-			rr_obb.use_outbound ? rr_obb.use_outbound(_m) : 0) < 0) {
+					0) < 0) {
 			LM_ERR("failed to insert outbound Record-Route\n");
 			return -5;
 		}
@@ -642,8 +644,9 @@ int record_route_advertised_address(struct sip_msg* _m, str* _data)
 		return -6;
 	}
 	
-	if (build_advertised_rr(l, l2, _data, &user, tag, INBOUND,
-		rr_obb.use_outbound ? rr_obb.use_outbound(_m) : 0) < 0) {
+	if (build_advertised_rr(l, l2, _data, &user, tag,
+				use_ob ? OUTBOUND: INBOUND,
+				use_ob) < 0) {
 		LM_ERR("failed to insert outbound Record-Route\n");
 		return -7;
 	}




More information about the sr-dev mailing list