11. ALTERNATE-SERVER Mechanism (Mécanisme de serveur alternatif)
Cette section décrit un mécanisme dans STUN qui permet à un serveur de rediriger un client vers un autre serveur. Cette extension est optionnelle, et une utilisation doit (must) définir si et quand cette extension est utilisée.
Un serveur utilisant cette extension redirige un client vers un autre serveur en répondant à un message de requête par un message de réponse d'erreur avec un code d'erreur de 300 (Try Alternate). Le serveur doit (MUST) inclure un attribut ALTERNATE-SERVER dans la réponse d'erreur. Le message de réponse d'erreur peut (MAY) être authentifié ; cependant, dans certains cas où ALTERNATE-SERVER est utilisé, l'authentification de la réponse peut ne pas être possible ou pratique.
Un client utilisant cette extension traite un code d'erreur 300 (Try Alternate) comme suit. Le client recherche un attribut ALTERNATE-SERVER dans la réponse d'erreur. S'il en trouve un, le client considère la transaction actuelle comme ayant échoué et retente la requête avec le serveur spécifié dans l'attribut, en utilisant le même protocole de transport utilisé pour la requête précédente. Cette requête, si elle est authentifiée, doit (MUST) utiliser les mêmes identifications que le client aurait utilisées avec le serveur auquel la requête devait être faite lorsqu'elle a été envoyée au serveur qui a effectué la redirection. Si le client a été redirigé vers un serveur auquel il a déjà essayé d'envoyer cette requête au cours des cinq dernières minutes, il doit (MUST) ignorer la redirection et considérer la transaction comme ayant échoué. Cela empêche un ping-pong infini entre les serveurs en cas de boucle de redirection.