2
0
Эх сурвалжийг харах

- tm fix: uri backup/restore print_uac_request bug
- tm: new_uri is no longer saved/restored across add_uac(...)/print_uac_request
calls since print_uac_request takes care of this internally

Andrei Pelinescu-Onciul 19 жил өмнө
parent
commit
609b1abdc0
2 өөрчлөгдсөн 4 нэмэгдсэн , 22 устгасан
  1. 1 1
      Makefile.defs
  2. 3 21
      modules/tm/t_fwd.c

+ 1 - 1
Makefile.defs

@@ -67,7 +67,7 @@ MAIN_NAME=ser
 VERSION = 0
 PATCHLEVEL = 10
 SUBLEVEL =   99
-EXTRAVERSION = -dev58
+EXTRAVERSION = -dev59
 
 SER_VER = $(shell expr $(VERSION) \* 1000000 + $(PATCHLEVEL) \* 1000 + \
 			$(SUBLEVEL) )

+ 3 - 21
modules/tm/t_fwd.c

@@ -61,6 +61,8 @@
  *  2006-10-11  don't fork a new branch if the transaction or branch was
  *               canceled, or a 6xx was received
  *              stop retr. timers fix on cancel for non-invites     (andrei)
+ *  2006-11-20  new_uri is no longer saved/restore across add_uac calls, since
+ *              print_uac_request is now uri safe (andrei)
  */
 
 #include "defs.h"
@@ -202,7 +204,7 @@ error01:
 	i_req->add_rm = add_rm_backup;
 	i_req->body_lumps = body_lumps_backup;
 	/* restore the new_uri from the backup */
-	if ((msg_uri->s!=uri->s) || (msg_uri->len!=uri->len)){
+	if (msg_uri_bak.s){
 		i_req->new_uri=msg_uri_bak;
 		i_req->parsed_uri=parsed_uri_bak;
 		i_req->parsed_uri_ok=parsed_uri_ok_bak;
@@ -463,9 +465,6 @@ void e2e_cancel( struct sip_msg *cancel_msg,
 	branch_bm_t cancel_bm, tmp_bm;
 	int i;
 	int lowest_error;
-	str backup_uri;
-	struct sip_uri backup_parsed_uri;
-	int backup_parsed_uri_ok;
 	int ret;
 
 	cancel_bm=0;
@@ -481,9 +480,6 @@ void e2e_cancel( struct sip_msg *cancel_msg,
 		return;
 	}
 	
-	backup_uri=cancel_msg->new_uri;
-	backup_parsed_uri_ok=cancel_msg->parsed_uri_ok;
-	backup_parsed_uri=cancel_msg->parsed_uri;
 	/* determine which branches to cancel ... */
 	which_cancel( t_invite, &cancel_bm );
 	t_cancel->nr_of_outgoings=t_invite->nr_of_outgoings;
@@ -496,9 +492,6 @@ void e2e_cancel( struct sip_msg *cancel_msg,
 			if (ret<0) cancel_bm &= ~(1<<i);
 			if (ret<lowest_error) lowest_error=ret;
 		}
-	cancel_msg->new_uri=backup_uri;
-	cancel_msg->parsed_uri_ok=backup_parsed_uri_ok;
-	cancel_msg->parsed_uri=backup_parsed_uri;
 
 	/* send them out */
 	for (i = 0; i < t_cancel->nr_of_outgoings; i++) {
@@ -709,9 +702,6 @@ int t_send_branch( struct cell *t, int branch, struct sip_msg* p_msg ,
 int t_forward_nonack( struct cell *t, struct sip_msg* p_msg , 
 	struct proxy_l * proxy, int proto)
 {
-	str          backup_uri;
-	struct sip_uri backup_parsed_uri;
-	int backup_parsed_uri_ok;
 	int branch_ret, lowest_ret;
 	str current_uri;
 	branch_bm_t	added_branches;
@@ -743,10 +733,6 @@ int t_forward_nonack( struct cell *t, struct sip_msg* p_msg ,
 		return -1;
 	}
 
-	/* backup current uri ... add_uac changes it */
-	backup_uri = p_msg->new_uri;
-	backup_parsed_uri_ok=p_msg->parsed_uri_ok;
-	backup_parsed_uri=p_msg->parsed_uri;
 	backup_si = p_msg->force_send_socket;
 	/* if no more specific error code is known, use this */
 	lowest_ret=E_BUG;
@@ -798,10 +784,6 @@ int t_forward_nonack( struct cell *t, struct sip_msg* p_msg ,
 	clear_branches();
 
 	p_msg->force_send_socket = backup_si;
-	/* restore original URI */
-	p_msg->new_uri=backup_uri;
-	p_msg->parsed_uri_ok=backup_parsed_uri_ok;
-	p_msg->parsed_uri=backup_parsed_uri;
 
 	/* don't forget to clear all branches processed so far */