Call Recovery Concepts

If the SIP route between endpoints has failed, the Microsoft Lync Server 2010 computer causes all new incoming messages to fail (surfaced to the application as a FailureResponseException with a SIP 430 error code) until the route is healed. When this happens, the application can either terminate the call or wait for recovery. If the application chooses to wait for recovery, it should implement timers to ensure that the call does not wait indefinitely. The application should also subscribe to the RouteSetStatusChanged event on the call so that it is notified of route events. When the route is healed (see Call Recovery Usage), the application can resend the messages.

In the UCMA 3.0 layer, an endpoint is set by default to MaximumRetry, one of the values of the RouteSetRecoveryMode enumeration. In the signaling layer, however, an application has a number of High Availability modes to choose from. An endpoint can be set with one of these modes as shown in the following example.

RealTimeEndpoint rte = applicationEndpoint.InnerEndpoint;
rte.ApplyRouteSetRecoverySettings(new RouteSetRecoverySettings(RouteSetRecoverMode.LimitedRetry));