FreeSWITCH Bridge Timers 101

A cheat sheet for anyone trying to control FreeSWITCH bridge behaviour if you’re trying to move calls around if not answered / responded to:


How long to wait for any response to from the remote peer (100 TRYING, 180 RINGING, etc).

This is useful for knowing when to give up and try a different peer as this peer is dead.


How many times to retransmit the INVITE if no 100 TRYING / 180 RINGING is received.

Like originate_timeout, this is handy for giving up sooner when a peer is dead and moving onto others.


How long we wait between sending the SIP INVITE before we get a 180/183 before we give up.

This is handy to find out if the remote end isn’t able to reach the endpoint you’re after (page the UE in a cellular context).


How long do we wait between the INVITE and a 200 OK (Including RINGING) – This is useful for “no answer” timeouts.

If you want to know why a bridge failed, ie no answer timeout reached, error on the remote end, etc, we can see why with the following variable:

variable_last_bridge_hangup_cause: [PROGRESS_TIMEOUT]

Which will allow you to tell if it’s no answer or progress timeout to blame.

One thought on “FreeSWITCH Bridge Timers 101

  1. Hi Nick,
    I’m always surprised of the amount of helpful material you publish. I have been
    looking at these values myself and have also been battling ‘leg_timeout’. Not much doco on it but it looks like it waits for a 183 with SDP. If only 180 Ringing (no sdp), it will timeout and try the next gateway. That is what I am seeing at the moment. Would love it if you had any experience with it, in particular for mobile calls (in Australia). Our leg_timeout is on 8 seconds for our 1st gateway and I suspect it is way too short and should be 15 seconds.

    Thanks for all your Kamailio posts too.

Leave a Reply

Your email address will not be published. Required fields are marked *