Browse Source

modules/tm: Fix setting instance in uac branches

Hugh Waite 12 years ago
parent
commit
1d8597f99b
1 changed files with 8 additions and 1 deletions
  1. 8 1
      modules/tm/t_fwd.c

+ 8 - 1
modules/tm/t_fwd.c

@@ -304,7 +304,7 @@ static int prepare_new_uac( struct cell *t, struct sip_msg *i_req,
 		   can change/update msg->instance */
 		if (instance==&i_req->instance)
 			instance=&instance_bak;
-		/* zero it first so that set_instancetor will work */
+		/* zero it first so that set_instance will work */
 		i_req->instance.s=0;
 		i_req->instance.len=0;
 		if (unlikely(instance)){
@@ -419,6 +419,13 @@ static int prepare_new_uac( struct cell *t, struct sip_msg *i_req,
 			i_req->path_vec.s=0;
 			i_req->path_vec.len=0;
 		}
+		if (unlikely(instance && (i_req->instance.s!=instance->s ||
+							  i_req->instance.len!=instance->len))){
+			i_req->instance=*instance;
+		}else if (unlikely(instance==0 && i_req->instance.len!=0)){
+			i_req->instance.s=0;
+			i_req->instance.len=0;
+		}
 	}
 	
 	if (likely(next_hop!=0 || (flags & UAC_DNS_FAILOVER_F))){