Module: sip-router
Branch: tmp/build_request
Commit: ef6fed5b07e4f199974e2236d1f44526d487559c
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=ef6fed5…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Tue Jul 21 11:10:48 2009 +0200
tm: local req. route rcv init fix
- dialog->send_sock can be null and should not be used (switched
to dst.send_sock which is guaranteed to be non-null at that
point)
- initialize also the other members of the msg rcv structure:
dst_ip, dst_port, src_su, bind_address and dst.comp.
Note: the rcv structure is initialized as if the message
originated from the dst.send_sock, so in the script src_ip &
friends will be the send ip. This is different from on_send
route, were src_ip is the original forwarded message source and
snd_ip is the send ip.
---
modules/tm/uac.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/modules/tm/uac.c b/modules/tm/uac.c
index 0a238bd..4e46489 100644
--- a/modules/tm/uac.c
+++ b/modules/tm/uac.c
@@ -336,9 +336,16 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
free_sip_msg(&lreq);
} else {
lreq.force_send_socket = uac_r->dialog->send_sock;
- lreq.rcv.proto = uac_r->dialog->send_sock->proto;
- lreq.rcv.src_ip = uac_r->dialog->send_sock->address;
- lreq.rcv.src_port = uac_r->dialog->send_sock->port_no;
+ lreq.rcv.proto = dst.send_sock->proto;
+ lreq.rcv.src_ip = dst.send_sock->address;
+ lreq.rcv.src_port = dst.send_sock->port_no;
+ lreq.rcv.dst_port = su_getport(&dst.to);
+ su2ip_addr(&lreq.rcv.dst_ip, &dst.to);
+ lreq.rcv.src_su=dst.send_sock->su;
+ lreq.rcv.bind_address=dst.send_sock;
+ #ifdef USE_COMP
+ lreq.rcv.comp=dst.comp;
+ #endif /* USE_COMP */
/* backup environment (e.g., AVP lists, ...) */
backup_uri_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_URI,
&new_cell->uri_avps_from);