diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-12-06 21:15:48 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-12-06 21:15:48 +0100 |
commit | db12bae0d9764c2825130dd766b9a1fe10956044 (patch) | |
tree | 5dda757773089dedbebfa302720b08730b1609d9 | |
parent | 530ae608a0df5f9f961bd4bbc3e5eda9ddeb3bc0 (diff) |
attempt to fall back if server connection closes unexpectedly
-rw-r--r-- | server_conn.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/server_conn.go b/server_conn.go index 034b5f9..ec3164f 100644 --- a/server_conn.go +++ b/server_conn.go @@ -104,6 +104,7 @@ func handleSrv(sc *ServerConn) { } }() +RecvLoop: for { pkt, err := sc.Recv() if err != nil { @@ -115,6 +116,21 @@ func handleSrv(sc *ServerConn) { } if sc.client() != nil { + if errors.Is(sc.WhyClosed(), rudp.ErrTimedOut) { + sc.client().SendChatMsg("Server connection timed out, triggering fallback.") + } else { + sc.client().SendChatMsg("Server connection lost, triggering fallback.") + } + + for _, srvName := range FallbackServers(sc.name) { + if err := sc.client().HopRaw(srvName); err != nil { + sc.client().Log("<-", err) + sc.client().SendChatMsg("Could not connect to "+srvName+", continuing fallback. Error:", err.Error()) + } + + break RecvLoop + } + ack, _ := sc.client().SendCmd(&mt.ToCltKick{ Reason: mt.Custom, Custom: "Server connection closed unexpectedly.", |