11. ALTERNATE-SERVER Mechanism (Alternativer Server-Mechanismus)
Dieser Abschnitt beschreibt einen Mechanismus in STUN, der es einem Server ermöglicht, einen Client zu einem anderen Server umzuleiten. Diese Erweiterung ist optional, und eine Verwendung muss (must) definieren, ob und wann diese Erweiterung verwendet wird.
Ein Server, der diese Erweiterung verwendet, leitet einen Client zu einem anderen Server um, indem er auf eine Anfragenachricht mit einer Fehlerantwortnachricht mit einem Fehlercode von 300 (Try Alternate) antwortet. Der Server muss (MUST) ein ALTERNATE-SERVER-Attribut in die Fehlerantwort einschließen. Die Fehlerantwortnachricht kann (MAY) authentifiziert sein; in einigen Fällen, in denen ALTERNATE-SERVER verwendet wird, kann die Authentifizierung der Antwort jedoch nicht möglich oder praktisch sein.
Ein Client, der diese Erweiterung verwendet, behandelt einen 300 (Try Alternate)-Fehlercode wie folgt. Der Client sucht nach einem ALTERNATE-SERVER-Attribut in der Fehlerantwort. Wenn eines gefunden wird, betrachtet der Client die aktuelle Transaktion als fehlgeschlagen und wiederholt die Anfrage mit dem im Attribut angegebenen Server, wobei dasselbe Transportprotokoll wie für die vorherige Anfrage verwendet wird. Diese Anfrage muss (MUST), wenn sie authentifiziert ist, dieselben Credentials verwenden, die der Client mit dem Server verwendet hätte, an den die Anfrage gerichtet werden sollte, als sie an den Server gesendet wurde, der die Umleitung durchgeführt hat. Wenn der Client zu einem Server umgeleitet wurde, an den er diese Anfrage innerhalb der letzten fünf Minuten bereits zu senden versucht hat, muss (MUST) er die Umleitung ignorieren und die Transaktion als fehlgeschlagen betrachten. Dies verhindert ein unendliches Ping-Pong zwischen Servern im Falle einer Umleitungsschleife.