$Revision: 1.10 $
$Date: 2007/11/14 15:30:21 $

# Parameters

## `fr_timer` (integer)

Timer which hits if no final reply for a request or ACK for a negative INVITE reply arrives (in milliseconds).

Default value is 30 seconds.

### Set `fr_timer` parameter

    ...
    modparam("tm", "fr_timer", 10)
    ...

## `fr_inv_timer` (integer)

Timer which hits if no final reply for an INVITE arrives after a provisional message was received (in milliseconds).

Default value is 120 seconds.

### Set `fr_inv_timer` parameter

    ...
    modparam("tm", "fr_inv_timer", 200)
    ...

## `wt_timer` (integer)

Time for which a transaction stays in memory to absorb delayed messages after it completed; also, when this timer hits, retransmission of local cancels is stopped (a puristic but complex behavior would be not to enter wait state until local branches are finished by a final reply or FR timer--we simplified).

Default value is 5 seconds.

### Set `wt_timer` parameter

    ...
    modparam("tm", "wt_timer", 10)
    ...

## `delete_timer` (integer)

Time after which a to-be-deleted transaction currently ref-ed by a process will be tried to be deleted again.

Default value is 200 milliseconds.

### Set `delete_timer` parameter

    ...
    modparam("tm", "delete_timer", 5)
    ...

## `retr_timer1` (integer)

Initial retransmission period (in milliseconds).

Default value is 500 milliseconds.

### Set `retr_timer1` parameter

    ...
    modparam("tm", "retr_timer1", 1000)
    ...

## `retr_timer2` (integer)

Maximum retransmission period (in milliseconds). The retransmission interval starts with `retr_timer1` and increases until it reaches this value. After this it stays constant at `retr_timer2`.

Default value is 4000 milliseconds.

### Set `retr_timer2` parameter

    ...
    modparam("tm", "retr_timer2", 2000)
    ...

## `noisy_ctimer` (integer)

If set, INVITE transactions that time-out (FR INV timer) will be always replied. If it's not set, the transaction has only one branch and no response was ever received on this branch, it will be silently dropped (no 408 reply will be generated) This behavior is overridden if a request is forked, the transaction has a failure route or callback, or some functionality explicitly turned it on for a transaction (like acc does to avoid unaccounted transactions due to expired timer). Turn this off only if you know the client UACs will timeout and their timeout interval fro INVITEs is lower or equal than tm's `fr_inv_timer`.

Default value is 1 (on).

### Set `noisy_ctimer` parameter

    ...
    modparam("tm", "noisy_ctimer", 1)
    ...

## `unix_tx_timeout` (integer)

Unix socket transmission timeout, in milliseconds.

If unix sockets are used (e.g.: to communicate with sems) and sending a message on a unix socket takes longer then `unix_tx_timeout`, the send will fail.

The default value is 500 milliseconds.

### Set `unix_tx_timeout` parameter

    ...
    modparam("tm", "unix_tx_timeout", 250)
    ...

## `aggregate_challenges` (integer)

If set (default), the final reply is a 401 or a 407 and more then one branch received a 401 or 407, then all the WWW-Authenticate and Proxy-Authenticate headers from all the 401 and 407 replies will be aggregated in a new final reply. If only one branch received the winning 401 or 407 then this reply will be forwarded (no new one will be built). If 0 only the first 401, or if no 401 was received the first 407, will be forwarded (no header aggregation).

Default value is 1 (required by rfc3261).

### Set `aggregate_challenges` parameter

    ...
    modparam("tm", "aggregate_challenges", 0)
    ...

## `reparse_invite` (integer)

If set (default), the CANCEL and negative ACK requests are constructed from the INVITE message which was sent out instead of building them from the received request. The disadvantage is that the outgoing INVITE has to be partially re-parsed, the advantage is that the CANCEL/ACK is always RFC 3261-compliant, it always contains the same route-set as the INVITE message. Do not disable the INVITE re-parsing for example in the following cases:

- The INVITE contains a preloaded route-set, and SER forwards the message to the next hop according to the Route header. The Route header is not removed in the CANCEL without `reparse_invite`=1.

- SER record-routes, thus an in-dialog INVITE contains a Route header which is removed during loose routing. If the in-dialog INVITE is rejected, the negative ACK still contains the Route header without `reparse_invite`=1.

Default value is 1.

### Set `reparse_invite` parameter

    ...
    modparam("tm", "reparse_invite", 0)
    ...

## `ac_extra_hdrs` (string)

Header fields prefixed by this parameter value are included in the CANCEL and negative ACK messages if they were present in the outgoing INVITE.

Note, that the parameter value effects only those headers which are not covered by RFC-3261 (which are neither mandatory nor prohibited in CANCEL and ACK), and the parameter can be used only together with `reparse_invite`=1.

Default value is "".

### Set `ac_extra_hdrs` parameter

    ...
    modparam("tm", "ac_extra_hdrs", "myfavoriteheaders-")
    ...

## `blst_503` (integer)

If set and the blacklist support is enabled, every 503 reply source is added to the blacklist. The initial blacklist timeout (or ttl) depends on the presence of a Retry-After header in the reply and the values of the following tm parameters: `blst_503_def_timeout`, `blst_503_min_timeout` and `blst_503_max_timeout`.

WARNING:blindly allowing 503 blacklisting could be very easily exploited for DOS attacks in most network setups.

The default value is 0 (disabled due to the reasons above).

### Set `blst_503` parameter

    ...
    modparam("tm", "blst_503", 1)
    ...

## `blst_503_def_timeout` (integer)

Blacklist interval in seconds for a 503 reply with no Retry-After header. See also `blst_503`, `blst_503_min_timeout` and `blst_503_max_timeout`.

The default value is 0, which means that if no Retry-After header is present, the 503 reply source will not be blacklisted (rfc conformant behaviour).

### Set `blst_503_def_timeout` parameter

    ...
    modparam("tm", "blst_503_def_timeout", 120)
    ...

## `blst_503_min_timeout` (integer)

Minimum blacklist interval in seconds for a 503 reply with a Retry-After header. It will be used if the Retry-After value is smaller. See also `blst_503`, `blst_503_def_timeout` and `blst_503_max_timeout`.

The default value is 0

### Set `blst_503_min_timeout` parameter

    ...
    modparam("tm", "blst_503_min_timeout", 30)
    ...

## `blst_503_max_timeout` (integer)

Maximum blacklist interval in seconds for a 503 reply with a Retry-After header. It will be used if the Retry-After value is greater. See also `blst_503`, `blst_503_def_timeout` and `blst_503_min_timeout`.

The default value is 3600

### Set `blst_503_max_timeout` parameter

    ...
    modparam("tm", "blst_503_max_timeout", 604800)
    ...

## `blst_methods_add` (unsigned integer)

Bitmap of method types that trigger blacklisting on transaction timeouts. (This setting has no effect on blacklisting because of send failures.)

The following values are associated to the request methods: INVITE=1, CANCEL=2, ACK=4 (not retransmitted, thus, never times-out), BYE=8, INFO=16, REGISTER=32, SUBSCRIBE=64, NOTIFY=126, OTHER=256 (all the unknown types). Check parser/msg_parser.h for farther details.

Change the value carefully, because requests not having provisional response (everything but INVITE) can easily cause the next hop to be inserted into the blacklist by mistake. For exmaple the next hop is a proxy, it is alive, but waiting for the response of the UAS, and has higher fr_timer value.

The default value is 1, only INVITEs trigger blacklisting

### Set `blst_methods_add` parameter

    ...
    # INVITEs and REGISTERs trigger blacklisting
    modparam("tm", "blst_methods_add", 33)
    ...

## `blst_methods_lookup` (unsigned integer)

Bitmap of method types that are looked-up in the blacklist before statefull forwarding. See also `blst_methods_add`

The default value is 4294967287, every method type except BYE. (We try to deliver BYEs no matter what)

### Set `blst_methods_lookup` parameter

    ...
    # lookup only INVITEs
    modparam("tm", "blst_methods_lookup", 1)
    ...