Răsfoiți Sursa

bug_fix: local cancel retransmission timer release
beautification if () {return} else statement changed
to if () {... return}; statement

Jiri Kuthan 23 ani în urmă
părinte
comite
0505ec516b
2 a modificat fișierele cu 11 adăugiri și 11 ștergeri
  1. 10 10
      modules/tm/t_lookup.c
  2. 1 1
      modules/tm/t_thandlers.c

+ 10 - 10
modules/tm/t_lookup.c

@@ -620,10 +620,10 @@ int t_newtran( struct sip_msg* p_msg )
 	lret = t_lookup_request( p_msg, 1 /* leave locked if not found */ );
 	/* on error, pass the error in the stack ... */
 	if (lret==0) return E_BAD_TUPEL;
+	/* transaction not found, it's a new request;
+	   establish a new transaction (unless it is an ACK) */
 	if (lret<0) {
 		new_cell=0;
-		/* transaction not found, it's a new request;
-		   establish a new transaction (unless it is an ACK) */
 		if ( p_msg->REQ_METHOD!=METHOD_ACK ) {
 			/* add new transaction */
 			new_cell = build_cell( p_msg ) ;
@@ -684,16 +684,16 @@ int t_newtran( struct sip_msg* p_msg )
 		}
 
 		return ret;
+	} 
+
+	/* transaction found, it's a retransmission  or hbh ACK */
+	if (p_msg->REQ_METHOD==METHOD_ACK) {
+		t_release_transaction(T);
 	} else {
-		/* transaction found, it's a retransmission  or hbh ACK */
-		if (p_msg->REQ_METHOD==METHOD_ACK) {
-			t_release_transaction(T);
-		} else {
-			t_retransmit_reply(T);
-		}
-		/* things are done -- return from script */
-		return 0;
+		t_retransmit_reply(T);
 	}
+	/* things are done -- return from script */
+	return 0;
 
 }
 

+ 1 - 1
modules/tm/t_thandlers.c

@@ -41,7 +41,7 @@ static void unlink_timers( struct cell *t )
 	if (is_in_timer_list2(&t->uas.response.retr_timer)) remove_retr=1; 
 	else for (i=0; i<t->nr_of_outgoings; i++)
 		if (is_in_timer_list2(&t->uac[i].request.retr_timer)
-			|| is_in_timer_list2(&t->uac[i].local_cancel.fr_timer)) {
+			|| is_in_timer_list2(&t->uac[i].local_cancel.retr_timer)) {
 				remove_retr=1;
 				break;
 		}