Hello.

 

I am having configuration issues with ser when dealing with users who have voicemail and desire a timeout after a set number of rings, and those who don’t have voicemail and desire a very long ring count.  Here is the example:

 

Phone A has voicemail

Phone B does not have voicemail

 

Works:

Phone B calls A.  A does not answer.  After a set period of time (fr_inv_timer=24),  the user is proxy’ed to voicemail.

 

Doesn’t work:

Phone A calls B. B does not answer.  After a set period of time, the proxy responds with a 408 and the transaction is CANCELed . 

 

The example above is a case when I just want to proxy the INVITE to a user without setting a timer, stateless.  I would consider sending the original INVITE using forward() for users without voicemail, but the parameters require a port and IP, of which exists in ser.location and I may fork to multiple contacts for the user.

 

In addition, when responding with a 408, how does the proxy differentiate between a timed out INVITE (after a set of retries) and a transactional timeout (that had a provisional response)?

 

Looking forward to the Paris show (and the food and the wine and  :-> )

 

Regards,

 

Chris

 

modparam("tm", "fr_timer", 12)

modparam("tm", "fr_inv_timer", 24)

modparam("tm", "wt_timer", 180)

 

 

route[7]

{

     setflag(5);       

     if ( is_user_in("Request-URI", "mail" ) )

     {

        t_on_failure("5");  /*_media_server_info_*/

     }

     else

     {

            log( "------------------------------------>route7 \n");

            t_on_failure("1");  /*_media_server_info_*/

     }

}

 

failure_route[5]

{

      if ( is_user_in("Request-URI", "mail" ) && ( t_check_status( "486" ) || t_check_status( "600" ) || t_check_status( "408" ) ) )

        {

            rewritehostport("66.115.232.216:5060");  /*_media_server_info_*/

            append_branch();

     

            if( t_check_status( "486" ) || t_check_status( "600" ) )

            {

                  append_urihf("Diversion: ", " ; reason=user-busy \r\n");

            }

            else if( t_check_status( "408" ) )

            {

                  append_urihf("Diversion: ", " ; reason=unavailable \r\n");

            }

 

            append_hf("P-hint: Forwarding to Voicemail Media Server\n");

            t_relay();

      }

      else if ( is_user_in("Request-URI", "mail" ) )

      {

            t_relay();

      }

      else if ( !is_user_in("Request-URI", "mail" ) || t_check_status( "408" ) )

      {

            log( "------------------------------------>failureroute5 conditional \n");

            t_on_failure("1");;

      }

            log( "------------------------------------>failureroute5 \n");

      break ;

}

 

failure_route[ 1 ]

{

if( t_check_status( "408" ) || t_check_status( "400" ) )

{

            log( "------------------------------------>failureroute1 \n");

append_branch( );

t_on_failure("1");

}

t_relay();

 

break;

}