Explorar o código

topoh: let replies for CANCEL requests be handled

- CANCEL is hop by hop, but can have the call-id hidden when sending out
Daniel-Constantin Mierla %!s(int64=11) %!d(string=hai) anos
pai
achega
376d8b3972
Modificáronse 1 ficheiros con 3 adicións e 8 borrados
  1. 3 8
      modules/topoh/topoh_mod.c

+ 3 - 8
modules/topoh/topoh_mod.c

@@ -318,8 +318,9 @@ int th_msg_received(void *data)
 		if(msg.via2==0)
 		{
 			/* one Via in received reply -- it is for local generated request
-			 * - nothing to unhide */
-			goto done;
+			 * - nothing to unhide unless is CANCEL/ACK */
+			if((get_cseq(&msg)->method_id)&(METHOD_CANCEL))
+				goto done;
 		}
 
 		th_unmask_via(&msg, &th_cookie_value);
@@ -385,12 +386,6 @@ int th_msg_sent(void *data)
 		th_del_cookie(&msg);
 	if(msg.first_line.type==SIP_REQUEST)
 	{
-		if(msg.via2==0)
-		{
-			/* one Via in request sent out -- it is local generated
-			 * - nothing to hide */
-			goto done;
-		}
 		direction = (th_cookie_value.s[0]=='u')?1:0; /* upstream/downstram */
 		dialog = (get_to(&msg)->tag_value.len>0)?1:0;
 		local = (th_cookie_value.s[0]!='d'&&th_cookie_value.s[0]!='u')?1:0;