[Serusers] Handling CANCELS when a UAC doesn't answer and t_relay has maintained state

Evan Borgström evan.borgstrom at ca.mci.com
Thu Jun 16 21:38:47 CEST 2005


Hello All,

	Looking for some input if anyone else has run into this situation 
and/or figured a way around it.

- Call comes in from PSTN gateway to a local user

- SER finds the user in the location table and t_relay pushes the 
request off to them

- The user is behind an ACL and is not sending keep-alives (yes I know 
the client is broken) so the INVITE never makes it to them and hence no 
180/183 Ringing message comes back

- PSTN user gives up and hangs up the phone after 3 seconds of no ringing

- PSTN gateway forwards the CANCEL message in and SER cancels the branch

- However since t_relay is stateful and re-tries transmissions the 
INVITE is sent another time or two

- Finally the connection times out and the failure_route set for the 
t_relay kicks in and the INVITE gets pushed off to the voicemail server.

- Voicemail server OK's the INVITE and starts retransmitting the OK over 
and over and over since the PSTN GW doesn't ACK the OK since it knows 
that call-id as being cancelled.


	So, should I handle cancel's a little more explicitly by doing 
something similar to:

if ((method=="CANCEL") && (t_lookup_request())) {
	t_release();
};

	What side effects, if any, would this cause? Is there a better way to 
handle it?

Thanks,
-Evan




More information about the sr-users mailing list