Maybe it is precisely this that I meant to allege was not working.

--
Alex Balashov - Principal
Evariste Systems LLC
1170 Peachtree Street
12th Floor, Suite 1200
Atlanta, GA 30309
Tel: +1-678-954-0670
Fax: +1-404-961-1892
Web: http://www.evaristesys.com/

On Oct 11, 2010, at 11:29 AM, Ovidiu Sas <[email protected]> wrote:

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

Author: Ovidiu Sas <[email protected]>
Committer: Ovidiu Sas <[email protected]>
Date:   Fri Oct  8 12:02:30 2010 -0400

modules_k/rtpproxy: fix rtpproxy_offer/answer when called with a second parameter

- closes FS#69
- nathelper.c: rtpproxy_offer / rtpproxy_answer (str2 parameter ignored)
  - reported by Marc Villacorta

---

modules_k/rtpproxy/rtpproxy.c |   28 ++++++++++++++++++++--------
1 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/modules_k/rtpproxy/rtpproxy.c b/modules_k/rtpproxy/ rtpproxy.c
index e9a0832..920bdd6 100644
--- a/modules_k/rtpproxy/rtpproxy.c
+++ b/modules_k/rtpproxy/rtpproxy.c
@@ -284,7 +284,7 @@ static int alter_rtcp(struct sip_msg *msg, str *body, str *oldport, str *newport
static char *gencookie();
static int rtpp_test(struct rtpp_node*, int, int);
static int unforce_rtp_proxy_f(struct sip_msg *, char *, char *);
-static int force_rtp_proxy(struct sip_msg *, char *, char *, int);
+static int force_rtp_proxy(struct sip_msg *, char *, char *, int, int);
static int start_recording_f(struct sip_msg *, char *, char *);
static int rtpproxy_answer1_f(struct sip_msg *, char *, char *);
static int rtpproxy_answer2_f(struct sip_msg *, char *, char *);
@@ -1672,13 +1672,13 @@ rtpproxy_offer1_f(struct sip_msg *msg, char *str1, char *str2)

        cp = ip_addr2a(&msg->rcv.dst_ip);
        strcpy(newip, cp);
-    return rtpproxy_offer2_f(msg, str1, newip);
+    return force_rtp_proxy(msg, str1, newip, 1, 0);
}

static int
rtpproxy_offer2_f(struct sip_msg *msg, char *param1, char *param2)
{
-    return force_rtp_proxy(msg, param1, param2, 1);
+    return force_rtp_proxy(msg, param1, param2, 1, 1);
}

static int
@@ -1687,9 +1687,13 @@ rtpproxy_answer1_f(struct sip_msg *msg, char *str1, char *str2)
        char *cp;
        char newip[IP_ADDR_MAX_STR_SIZE];

+    if (msg->first_line.type == SIP_REQUEST)
+        if (msg->first_line.u.request.method_value != METHOD_ACK)
+            return -1;
+
        cp = ip_addr2a(&msg->rcv.dst_ip);
        strcpy(newip, cp);
-        return rtpproxy_answer2_f(msg, str1, newip);
+    return force_rtp_proxy(msg, str1, newip, 0, 0);
}

static int
@@ -1700,7 +1704,7 @@ rtpproxy_answer2_f(struct sip_msg *msg, char *param1, char *param2)
       if (msg->first_line.u.request.method_value != METHOD_ACK)
           return -1;

-    return force_rtp_proxy(msg, param1, param2, 0);
+    return force_rtp_proxy(msg, param1, param2, 0, 1);
}


@@ -1751,7 +1755,7 @@ free_opts(struct options *op1, struct options *op2, struct options *op3)
    } while (0);

static int
-force_rtp_proxy(struct sip_msg* msg, char* str1, char* str2, int offer) +force_rtp_proxy(struct sip_msg* msg, char* str1, char* str2, int offer, int forcedIP)
{
   str body, body1, oldport, oldip, newport, newip;
   str callid, from_tag, to_tag, tmp, payload_types;
@@ -2165,8 +2169,16 @@ force_rtp_proxy(struct sip_msg* msg, char* str1, char* str2, int offer)
                   newip.len = 7;
               }
           } else {
-                newip.s = (argc < 2) ? str2 : argv[1];
-                newip.len = strlen(newip.s);
+                if (forcedIP) {
+                    newip.s = str2;
+                    newip.len = strlen(newip.s);
+#ifdef EXTRA_DEBUG
+ LM_DBG("forcing IP='%.*s'\n", newip.len, newip.s);
+#endif
+                } else {
+                    newip.s = (argc < 2) ? str2 : argv[1];
+                    newip.len = strlen(newip.s);
+                }
           }
/* marker to double check : newport goes: str -> int -> str ?!?! */ newport.s = int2str(port, &newport.len); /* beware static buffer */


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

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

Reply via email to