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

Author: Peter Dunkley <[email protected]>
Committer: Peter Dunkley <[email protected]>
Date:   Sun Jan  6 19:31:41 2013 +0000

modules_k/rr: Fixes to loose.c from outbound testing

---

 modules_k/rr/loose.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/modules_k/rr/loose.c b/modules_k/rr/loose.c
index e110808..b7fa243 100644
--- a/modules_k/rr/loose.c
+++ b/modules_k/rr/loose.c
@@ -48,6 +48,7 @@
 #define RR_ERROR -1            /*!< An error occured while processing route 
set */
 #define RR_DRIVEN 1            /*!< The next hop is determined from the route 
set */
 #define NOT_RR_DRIVEN -1       /*!< The next hop is not determined from the 
route set */
+#define FLOW_TOKEN_BROKEN -2   /*!< Outbound flow-token shows evidence of 
tampering */
 
 #define RR_ROUTE_PREFIX ROUTE_PREFIX "<"
 #define RR_ROUTE_PREFIX_LEN (sizeof(RR_ROUTE_PREFIX)-1)
@@ -581,9 +582,9 @@ static inline int after_strict(struct sip_msg* _m)
        }
 
        next_is_strict = is_strict(&puri.params);
-       if ((use_ob = process_outbound(_m, puri.user, &uri) < 0)) {
+       if ((use_ob = process_outbound(_m, puri.user, &uri)) < 0) {
                LM_ERR("processing outbound flow-token\n");
-               return RR_ERROR;
+               return FLOW_TOKEN_BROKEN;
        }
 
        if (!use_ob && enable_double_rr && is_2rr(&puri.params) && 
is_myself(&puri)) {
@@ -774,9 +775,9 @@ static inline int after_loose(struct sip_msg* _m, int 
preloaded)
        next_is_strict = is_strict(&puri.params);
        routed_params = puri.params;
        uri_is_myself = is_myself(&puri);
-       if ((use_ob = process_outbound(_m, puri.user, &uri) < 0)) {
+       if ((use_ob = process_outbound(_m, puri.user, &uri)) < 0) {
                LM_ERR("processing outbound flow-token\n");
-               return RR_ERROR;
+               return FLOW_TOKEN_BROKEN;
        }
 
        /* IF the URI was added by me, remove it */
@@ -795,6 +796,11 @@ static inline int after_loose(struct sip_msg* _m, int 
preloaded)
                                LM_ERR("failed to remove Route HF\n");
                                return RR_ERROR;
                        }
+
+                       /* When using outbound skip past all this stuff and 
just set
+                          the destination */
+                       if (use_ob) goto got_uri;
+
                        res = find_next_route(_m, &hdr);
                        if (res < 0) {
                                LM_ERR("failed to find next route\n");
@@ -872,6 +878,7 @@ static inline int after_loose(struct sip_msg* _m, int 
preloaded)
        } else {
                /* Next hop is loose router */
                LM_DBG("Next URI is a loose router\n");
+got_uri:
 
                if (!use_ob) {
                        if(get_maddr_uri(&uri, &puri)!=0) {


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

Reply via email to