[Serusers] Routing Logic Question

Zeus Ng zeus.ng at isquare.com.au
Fri Mar 11 04:25:05 CET 2005


You should do no more than what you have done.

The R-URI in CANCEL should be the same as in INVITE. If you can determine
the call is for PSTN with INVITE, the same logic applies to CANCEL.

If the R-URI received from CANCEL is different to the one from INVITE, there
is a problem with that implementation.


> -----Original Message-----
> From: serusers-bounces at lists.iptel.org 
> [mailto:serusers-bounces at lists.iptel.org] On Behalf Of Java Rockx
> Sent: Friday, 11 March 2005 1:24 PM
> To: serusers at lists.iptel.org
> Subject: [Serusers] Routing Logic Question
> 
> 
> Hi All.
> 
> I'm a confused when handling CANCEL messages when the call is 
> between my SER proxy and a PSTN gateway.
> 
> I've had a few discussions with Jan regarding when 
> lookup("location") needs to be called and as I understand it 
> CANCEL is sort of an odd message that is not really 
> mid-dialog, and therefore not record-routed. So 
> lookup("location") needs to be called before t_relay()ing a CANCEL.
> 
> This is fine for calls between two UAs on the same SER proxy 
> since both UAs have a contact record and lookup("location") 
> will return TRUE.
> 
> But when calling SIP->PSTN, and you hang up from the SIP 
> side, the CANCEL is sent from the SIP UA to SER. Then SER 
> tries to find the contact record in the location table, but 
> since this is a PSTN destination, lookup(location) returns 
> false, thus a 404 and the CANCEL is not relayed to the PSTN gateway.
> 
> So what is the best way to process CANCEL messages? Just ignore
> lookup("location") when it returns false for CANCEL messages?
> 
> My basic ser.cfg is like this:
> 
> route {
>     # sanity checks
>     if (method!="REGISTER") record_route();
>     if (loose_route()) {
>         t_relay();
>         break;
>     };
> 
>     if (uri!=myself) {
>         t_relay();
>         break;
>     };
> 
>     if (uri==myself) {
>          if (method=="REGISTER") {
>              save("location");
>              break;
>          };
>          if (!lookup("location")) {
>              sl_send_reply("404", "Not Found");
>              break;
>          };
>      };
>      t_relay();
> }
> 
> Regards,
> Paul
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
> 




More information about the sr-users mailing list