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

Author: Juha Heinanen <[email protected]>
Committer: Juha Heinanen <[email protected]>
Date:   Fri May 28 15:54:51 2010 +0300

modules/lcr: Simpler implementation of next_gw() function

- Based on recent changes related to Request-URI handling.

---

 modules/lcr/lcr_mod.c |   54 ++++++++++++------------------------------------
 1 files changed, 14 insertions(+), 40 deletions(-)

diff --git a/modules/lcr/lcr_mod.c b/modules/lcr/lcr_mod.c
index add81d9..95d6c12 100644
--- a/modules/lcr/lcr_mod.c
+++ b/modules/lcr/lcr_mod.c
@@ -79,7 +79,6 @@
 #include "../../resolve.h"
 #include "../../mod_fix.h"
 #include "../../socket_info.h"
-#include "../../modules/tm/tm_load.h"
 #include "../../pvar.h"
 #include "../../mod_fix.h"
 #include "hash.h"
@@ -149,9 +148,6 @@ static void free_shared_memory(void);
  * Type definitions
  */
 
-/* TMB Structure */
-struct tm_binds tmb;
-
 struct gw_grp {
     unsigned int grp_id;
     unsigned int first;   /* index to first gw of group in gw table */
@@ -242,7 +238,6 @@ struct gw_info **gwtp = (struct gw_info **)NULL;
 /* Pointer to lcr hash table pointer table */
 struct lcr_info ***lcrtp = (struct lcr_info ***)NULL;
 
-
 /*
  * Functions that are defined later
  */
@@ -403,6 +398,7 @@ static int mod_init(void)
     unsigned short avp_flags;
     unsigned int i;
 
+    /* Register RPC commands */
     if (rpc_register_array(lcr_rpc)!=0) {
        LM_ERR("failed to register RPC commands\n");
        return -1;
@@ -1869,22 +1865,20 @@ static int defunct_gw(struct sip_msg* _m, char 
*_defunct_period, char *_s2)
 
 
 /*
- * When called first time in route block, rewrites scheme, host, port, and
+ * When called first time, rewrites scheme, host, port, and
  * transport parts of R-URI based on first gw_uri_avp value, which is then
  * destroyed.  Saves R-URI user to ruri_user_avp for later use.
  *
- * On other calls appends a new branch to request, where scheme, host, port,
+ * On other calls, rewrites R-URI, where scheme, host, port,
  * and transport of URI are taken from the first gw_uri_avp value, 
- * which is then destroyed. URI user is taken either from R-URI (first
- * call in failure route block) or from ruri_user_avp value saved earlier.
+ * which is then destroyed. URI user is taken either from ruri_user_avp
+ * value saved earlier.
  *
  * Returns 1 upon success and -1 upon failure.
  */
 static int next_gw(struct sip_msg* _m, char* _s1, char* _s2)
 {
     int_str ruri_user_val, val;
-    struct action act;
-    struct run_act_ctx ra_ctx;
     struct usr_avp *ru_avp;
     int rval;
     str uri_str;
@@ -1899,6 +1893,7 @@ static int next_gw(struct sip_msg* _m, char* _s1, char* 
_s2)
        /* First invocation either in route or failure route block.
         * Take Request-URI user from Request-URI and generate Request
          * and Destination URIs. */
+
        if (parse_sip_msg_uri(_m) < 0) {
            LM_ERR("parsing of R-URI failed\n");
            return -1;
@@ -1910,48 +1905,27 @@ static int next_gw(struct sip_msg* _m, char* _s1, char* 
_s2)
 
        /* Save Request-URI user into uri_user_avp for use in subsequent
          * invocations. */
+
        val.s = _m->parsed_uri.user;
        add_avp(ruri_user_avp_type|AVP_VAL_STR, ruri_user_avp, val);
        LM_DBG("added ruri_user_avp <%.*s>\n", val.s.len, val.s.s);
 
     } else {
 
-       /* Subsequent invocation either in route or failure route block. */
-
-       /* Take Request-URI user from ruri_user_avp and generate Request
+       /* Subsequent invocation either in route or failure route block.
+        * Take Request-URI user from ruri_user_avp and generate Request
          * and Destination URIs. */
+
        if (generate_uris(r_uri, &(ruri_user_val.s), &r_uri_len, dst_uri,
                          &dst_uri_len, &addr, &flags) != 1) {
            return -1;
        }
     }
 
-    if ((is_route_type(REQUEST_ROUTE)) && (ru_avp == NULL)) {
-
-       /* First invocation in route block => Rewrite Request URI. */
-       memset(&act, '\0', sizeof(act));
-       act.type = SET_URI_T;
-       act.val[0].type = STRING_ST;
-       act.val[0].u.string = r_uri;
-       init_run_actions_ctx(&ra_ctx);
-       rval = do_action(&ra_ctx, &act, _m);
-       if (rval != 1) {
-           LM_ERR("do_action failed with return value <%d>\n", rval);
-           return -1;
-       }
-
-    } else {
-       
-       /* Subsequent invocation in route block or any invocation in
-         * failure route block => append new branch. */
-       uri_str.s = r_uri;
-       uri_str.len = r_uri_len;
-       LM_DBG("appending branch <%.*s>\n", uri_str.len, uri_str.s);
-       if (append_branch(_m, &uri_str, 0, 0, Q_UNSPECIFIED, 0, 0) == -1) {
-           LM_ERR("when appending branch <%.*s>\n", uri_str.len, uri_str.s);
-           return -1;
-       }
-    }
+    /* Rewrite Request URI */
+    uri_str.s = r_uri;
+    uri_str.len = r_uri_len;
+    rewrite_uri(_m, &uri_str);
     
     /* Set Destination URI if not empty */
     if (dst_uri_len > 0) {


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

Reply via email to