3.7.5.3.4 Dialog Recovery Procedure

The user agent MUST execute the following steps to recover the dialog state:

  1. The user agent MUST construct and send an appropriate target refresh request for the dialog. For example, the user agent sends an UPDATE request for an INVITE dialog or a SUBSCRIBE request for a SUBSCRIBE dialog. The user agent then waits for completion of the associated SIP transaction. The target refresh request MUST carry a value, as specified in section 2.2.2.2, in the Contact header field and Record-Route header fields.

  2. If the transaction initiated by the target refresh request succeeds, the user agent MUST extract the URIs from the Contact and Record-Route header fields in the response and update the route set and remote target field in the dialog state.

  3. If the target refresh fails with a 430 Flow Failed response that carries a P-Dialog-Recovery-Action header field with a single Wait-For-Session-Update tag as its value, the user agent SHOULD start or reset the recovery refresh timer with the interval set to at least the interval it negotiated for the session timer.

When the dialog recovery procedure succeeds for a given dialog, the user agent SHOULD also initiate recovery procedures for other dialogs that are logically related to the recovered dialog. For example, the user agent initiates dialog recovery for the dialogs in the conference, as described in [MS-CONFBAS], when it recovers one of them.