Arcadia crashes when the proxied game client disconnects
bug
Arcadia currently crashes with a TLS related error when a game client disconnects during proxy mode. Since TLS is only used by FESL and FESL always connects first, the crash occurs every time the connection to Theater fails - which is quite common.
Ideally, Arcadia would just close the connection to the upstream FESL server gracefully and stay running, allowing to players to retry connecting without having to restart Arcadia.
```
[08:09:41::260] trce: Arcadia.EA.Proxy.FeslProxy[0] Proxying id=5 len=91 fsys, data: TXN=Goodbye; reason=GOODBYE_CLIENT_NORMAL; message="ErrType%3d2 ErrCode%3d-102"
[08:09:41::292] info: Arcadia.EA.Proxy.TheaterProxy[0] Proxy connection closed, exiting...
[08:09:41::293] fail: Arcadia.EA.Proxy.FeslProxy[0] Failed to read proxy data Org.BouncyCastle.Tls.TlsNoCloseNotifyException: No close_notify alert received before connection closed at Org.BouncyCastle.Tls.TlsProtocol.SafeReadRec
ord() at Org.BouncyCastle.Tls.TlsProtocol.ReadApplicationData(Span`1 buffer) at Org.BouncyCastle.Tls.TlsProtocol.ReadApplicationData(Byte[] buffer, Int32 offset, Int32 count) at Arcadia.EA.Proxy.FeslProxy.ProxyApplicationDa
ta(TlsProtocol source, TlsProtocol destination) in src\server\EA\Proxy\FeslProxy.cs:line 111
[08:09:41::314] info: Arcadia.EA.Proxy.FeslProxy[0] Proxy connection closed, exiting...
[08:09:41::517] trce: Arcadia.EA.Proxy.FeslProxy[0] Proxying id=5 len=24 fsys, data: TXN=Goodbye
Unhandled exception. System.IO.IOException: Cannot write application data on closed/failed TLS connection
at Org.BouncyCastle.Tls.TlsProtocol.WriteApplicationData(ReadOnlySpan`1 buffer)
at Org.BouncyCastle.Tls.TlsProtocol.WriteApplicationData(Byte[] buffer, Int32 offset, Int32 count)
at Arcadia.EA.Proxy.FeslProxy.ProxyApplicationData(TlsProtocol source, TlsProtocol destination) in src\server\EA\Proxy\FeslProxy.cs:line 358
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
```
关闭于 2023-10-18 0 条评论