@@ -457,15 +457,16 @@ def construct_invite_message(
457457 def ack_generator (self , transaction ):
458458 _ , port = self .sip_core .get_extra_info ("sockname" )
459459 ip = self .my_public_ip
460+ request_uri = self .dialogue .remote_contact_uri or f"sip:{ self .callee } @{ self .server } :{ self .port } ;transport={ self .CTS } "
460461
461- msg = f"ACK sip: { self . callee } @ { self . server } : { self . port } ;transport= { self . CTS } SIP/2.0\r \n "
462+ msg = f"ACK { request_uri } SIP/2.0\r \n "
462463 msg += f"Via: SIP/2.0/{ self .CTS } { ip } :{ port } ;rport;branch={ transaction .branch_id } ;alias\r \n "
463464 msg += "Max-Forwards: 70\r \n "
464465 msg += f"From: sip:{ self .caller_id } @{ self .server } ;tag={ self .dialogue .local_tag } \r \n "
465466 msg += f"To: sip:{ self .callee } @{ self .server } ;tag={ self .dialogue .remote_tag } \r \n "
466467 msg += f"Call-ID: { self .call_id } \r \n "
467468 msg += f"CSeq: { transaction .cseq } ACK\r \n "
468- msg += f"Route: <sip: { self . server } : { self . port } ;transport= { self . CTS } ;lr>\r \n "
469+ msg += f"Route: <{ request_uri } ;lr>\r \n "
469470 msg += "Content-Length: 0\r \n \r \n "
470471
471472 return msg
@@ -476,18 +477,20 @@ def bye_generator(self):
476477
477478 branch_id = self .sip_core .gen_branch ()
478479 transaction = self .dialogue .add_transaction (branch_id , "BYE" )
480+ request_uri = self .dialogue .remote_contact_uri or f"sip:{ self .callee } @{ peer_ip } :{ peer_port } ;transport={ self .CTS } "
479481
480- msg = f"BYE sip: { self . callee } @ { peer_ip } : { peer_port } ;transport= { self . CTS } SIP/2.0\r \n "
482+ msg = f"BYE { request_uri } SIP/2.0\r \n "
481483 msg += (
482484 f"Via: SIP/2.0/{ self .CTS } { self .my_public_ip } :{ port } ;rport;"
483485 + f"branch={ branch_id } ;alias\r \n "
484486 )
485- msg += 'Reason: Q.850;cause=16;text="normal call clearing"'
487+ msg += 'Reason: Q.850;cause=16;text="normal call clearing"\r \n '
486488 msg += "Max-Forwards: 70\r \n "
487489 msg += f"From: sip:{ self .caller_id } @{ self .server } ;tag={ self .dialogue .local_tag } \r \n "
488490 msg += f"To: sip:{ self .callee } @{ self .server } ;tag={ self .dialogue .remote_tag } \r \n "
489491 msg += f"Call-ID: { self .call_id } \r \n "
490492 msg += f"CSeq: { transaction .cseq } BYE\r \n "
493+ msg += f"Route: <{ request_uri } ;lr>\r \n "
491494 msg += "Content-Length: 0\r \n \r \n "
492495
493496 return msg
@@ -500,8 +503,9 @@ def refer_generator(self, refer_to_callee):
500503 transaction = self .dialogue .add_transaction (branch_id , "REFER" )
501504 refer_to = f"sip:{ refer_to_callee } @{ self .server } ;transport={ self .CTS } "
502505 referred_by = f"sip:{ self .caller_id } @{ self .server } "
506+ request_uri = self .dialogue .remote_contact_uri or f"sip:{ self .callee } @{ self .server } :{ self .port } ;transport={ self .CTS } "
503507
504- msg = f"REFER sip: { self . callee } @ { self . server } : { self . port } ;transport= { self . CTS } sip/2.0\r \n "
508+ msg = f"REFER { request_uri } sip/2.0\r \n "
505509 msg += f"Via: sip/2.0/{ self .CTS } { ip } :{ port } ;rport;branch={ branch_id } ;alias\r \n "
506510 msg += "Max-Forwards: 70\r \n "
507511 msg += f"From: sip:{ self .caller_id } @{ self .server } ;tag={ self .dialogue .local_tag } \r \n "
@@ -511,6 +515,7 @@ def refer_generator(self, refer_to_callee):
511515 msg += f"Refer-To: { refer_to } \r \n "
512516 msg += f"Referred-By: { referred_by } \r \n "
513517 msg += f"Contact: <sip:{ self .username } @{ ip } :{ port } ;transport={ self .CTS } >\r \n "
518+ msg += f"Route: <{ request_uri } ;lr>\r \n "
514519 msg += "Content-Length: 0\r \n \r \n "
515520
516521 return msg
@@ -668,10 +673,10 @@ async def message_handler(self, msg: SipMessage):
668673 transaction = self .dialogue .add_transaction (
669674 self .sip_core .gen_branch (), "ACK"
670675 )
676+ self .dialogue .update_state (msg )
671677 ack_message = self .ack_generator (transaction )
672678 self .dialogue .auth_retry_count = 0 # reset the auth counter
673679 await self .sip_core .send (ack_message )
674- self .dialogue .update_state (msg )
675680 await self .update_call_state (CallState .ANSWERED )
676681 return
677682
0 commit comments