Module: kamailio
Branch: master
Commit: 486c069222462e4bc05da36b098062be941d672d
URL:
https://github.com/kamailio/kamailio/commit/486c069222462e4bc05da36b098062b…
Author: Victor Seva <linuxmaniac(a)torreviejawireless.org>
Committer: Victor Seva <linuxmaniac(a)torreviejawireless.org>
Date: 2015-02-20T08:19:17+01:00
nathelper: use always contact to build ruri and received field if available to send the
ping
Fixes #37
---
Modified: modules/nathelper/nathelper.c
---
Diff:
https://github.com/kamailio/kamailio/commit/486c069222462e4bc05da36b098062b…
Patch:
https://github.com/kamailio/kamailio/commit/486c069222462e4bc05da36b098062b…
---
diff --git a/modules/nathelper/nathelper.c b/modules/nathelper/nathelper.c
index 0c9e4fb..81d2cac 100644
--- a/modules/nathelper/nathelper.c
+++ b/modules/nathelper/nathelper.c
@@ -2051,6 +2051,8 @@ nh_timer(unsigned int ticks, void *timer_idx)
int rval;
void *buf, *cp;
str c;
+ str recv;
+ str *dst_uri;
str opt;
str path;
str ruid;
@@ -2111,6 +2113,9 @@ nh_timer(unsigned int ticks, void *timer_idx)
break;
c.s = (char*)cp + sizeof(c.len);
cp = (char*)cp + sizeof(c.len) + c.len;
+ memcpy(&(recv.len), cp, sizeof(recv.len));
+ recv.s = (char*)cp + sizeof(recv.len);
+ cp = (char*)cp + sizeof(recv.len) + recv.len;
memcpy( &send_sock, cp, sizeof(send_sock));
cp = (char*)cp + sizeof(send_sock);
memcpy( &flags, cp, sizeof(flags));
@@ -2127,6 +2132,9 @@ nh_timer(unsigned int ticks, void *timer_idx)
if ((flags & natping_disable_flag)) /* always 0 if natping_disable_flag not set */
continue;
+ if(recv.len>0) dst_uri = &recv;
+ else dst_uri = &c;
+
/* determin the destination */
if ( path.len && (flags&sipping_flag)!=0 ) {
/* send to first URI in path */
@@ -2149,14 +2157,14 @@ nh_timer(unsigned int ticks, void *timer_idx)
LM_ERR("could not parse path host for udpping_from_path\n");
continue;
}
- if (parse_uri(c.s, c.len, &curi) < 0) {
- LM_ERR("can't parse contact uri\n");
+ if (parse_uri(dst_uri->s, dst_uri->len, &curi) < 0) {
+ LM_ERR("can't parse contact/received uri\n");
continue;
}
} else {
/* send to the contact/received */
- if (parse_uri(c.s, c.len, &curi) < 0) {
- LM_ERR("can't parse contact uri\n");
+ if (parse_uri(dst_uri->s, dst_uri->len, &curi) < 0) {
+ LM_ERR("can't parse contact/received uri\n");
continue;
}
}