Erstmal zum Verständniss: Ich schlage nicht vor, dass jeder neue Client eine Standleitung bei einem Cnetralex Server haben soll.
Stattdessen soll man, wenn man sich beim Centralex authentifiziert hat (Durch eine Standleitung
oder Aufbauen eine Verbindung zum Server + RemAuth Packet) ein RemPromptCall
schicken können, um einen Anruf an die Nummer in dem Packet zu starten.
Das Centralex öffnet dann eine Verbindung mit der angerufenen Nummer (wenn diese nicht zufälligerweise eine Standleitung auf dem selben Server hat) und schickt auch ein RemPromptCall Packet.
Dieses fordert den Client auf eine Verbindung mit einem Centrale Server aufzubauen.
Im Nachhinein ist es wahrscheinlich Sinnvoll dieses mit einem anderen Packet, bswp.
RemReqConnect [länge=0] zu ersetzen (
b).
Ich dachte mir nur, dass man so weniger neue Packete hätte.
Der Angerufene Client ist dann entweder ein neuer Client, erkennt das Packet, schickt ein RemAck zurück und trennt, oder er erkennt das Packet nicht.
In dem Fall müsste man mal gucken, wie genau das ITelex dann reagiert, aber sobald der centralex Server erkennt,
dass der Client das neue Protokoll nicht unterstützt wird die Verbindung offen gehalten und zum Anrufer durchverbunden (
e),
(Evtl. könnte man das auch über das "Version" Packet lösen).
Das Trennen und Wiederaufbauen der Verbindung ist nötig, da sonst jeder ein "RemPromptCall/RemReqConnect" Packet an einen neuen Client schicken könnte
und dann Nummer und Pin des Clients in einem RemAuth Packet zurückbekommen würde... (
c)
Wenn der Angerufene Client das Packet erkannt und die Verbindung getrennt hat meldet er sich danach bei seinem Centralex Server an und authentifiziert sich mit Nummer und Pin (
a).
Damit die Schritte ab A stattfinden können müssen der centralex Server vom Anrufer und vom Angerufenen entweder der selbe Server sein, oder der Server des Anrufenden muss erfahren, dass der Angerufene Client auf einem anderen Server verbunden ist. Das zu lösen sollte möglich sein, ich bin aber noch nicht ganz sicher, wie man das am besten umsetzt (
f).
d) Schritt A: Wieso sollte der Angerufene in diesem Schritt auflegen?
Das würde es erlauben eine art "blacklist" zu implementieren, die Anrufe von bestimmten Nummern sofort ablehnt.