Module: sip-router
Branch: master
Commit: 3cf20fed4d75797eec1ae820da8d8ab9abcdc668
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=3cf20fe…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Wed Sep 23 20:59:40 2009 +0200
tm: set T before entering local-request route
---
modules/tm/uac.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/modules/tm/uac.c b/modules/tm/uac.c
index cd3e1e9..7565763 100644
--- a/modules/tm/uac.c
+++ b/modules/tm/uac.c
@@ -86,6 +86,7 @@
#include "../../receive.h"
#include "../../route.h"
#include "../../action.h"
+#include "t_lookup.h"
#endif
#define FROM_TAG_LEN (MD5_LEN + 1 /* - */ + CRC16_LEN) /* length of FROM tags */
@@ -205,6 +206,9 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
#endif
long nhtype;
#ifdef WITH_EVENT_LOCAL_REQUEST
+ struct cell *backup_t;
+ int backup_branch;
+ unsigned int backup_msgid;
static struct sip_msg lreq;
char *buf1;
int buf_len1;
@@ -353,7 +357,17 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
/* run the route */
backup_route_type = get_route_type();
set_route_type(LOCAL_ROUTE);
+ /* set T to the current transaction */
+ backup_t=get_t();
+ backup_branch=get_t_branch();
+ backup_msgid=global_msg_id;
+ /* fake transaction and message id */
+ global_msg_id=lreq.id;
+ set_t(new_cell, T_BR_UNDEFINED);
run_top_route(event_rt.rlist[goto_on_local_req], &lreq, 0);
+ /* restore original environment */
+ set_t(backup_t, backup_branch);
+ global_msg_id=backup_msgid;
set_route_type( backup_route_type );
/* restore original environment */