|
@@ -403,9 +403,10 @@ void rpc_cancel(rpc_t *rpc, void *c)
|
|
|
static char cseq[128], callid[128];
|
|
|
struct cancel_info cancel_data;
|
|
|
int i, j;
|
|
|
-
|
|
|
str cseq_s; /* cseq */
|
|
|
str callid_s; /* callid */
|
|
|
+ tm_cell_t *orig_t = NULL;
|
|
|
+ int orig_branch;
|
|
|
|
|
|
cseq_s.s = cseq;
|
|
|
callid_s.s = callid;
|
|
@@ -416,6 +417,8 @@ void rpc_cancel(rpc_t *rpc, void *c)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ orig_t = get_t();
|
|
|
+ orig_branch = get_t_branch();
|
|
|
if(t_lookup_callid(&trans, callid_s, cseq_s) < 0) {
|
|
|
LM_DBG("Lookup failed\n");
|
|
|
rpc->fault(c, 400, "Transaction not found");
|
|
@@ -430,6 +433,7 @@ void rpc_cancel(rpc_t *rpc, void *c)
|
|
|
|
|
|
/* t_lookup_callid REF`d the transaction for us, we must UNREF here! */
|
|
|
UNREF(trans);
|
|
|
+ set_t(orig_t, orig_branch);
|
|
|
j = 0;
|
|
|
while(i) {
|
|
|
j++;
|