warn instead of crash on unexpected packet
This commit is contained in:
+5
-2
@@ -6,7 +6,7 @@ import (
|
|||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"log/slog"
|
||||||
|
|
||||||
"github.com/admin-else/strom/api"
|
"github.com/admin-else/strom/api"
|
||||||
"github.com/admin-else/strom/crypto"
|
"github.com/admin-else/strom/crypto"
|
||||||
@@ -42,7 +42,10 @@ func (k KickedDuringLoginErr) Error() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *LoginClient) OnDefault(event event.Unhandled) (err error) {
|
func (s *LoginClient) OnDefault(event event.Unhandled) (err error) {
|
||||||
err = fmt.Errorf("unexpected event: %#v", event)
|
if _, ok := event.Val.(proto_base.EncodeDecodeAble); !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
slog.Warn("unexpected packet during login client", "packet", event.Val)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,10 @@ func (l *LoginServer) OnLoginAcknowledged(_ *v1_21_8.LoginToServerPacketLoginAck
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *LoginServer) OnDefault(event event.Unhandled) (err error) {
|
func (l *LoginServer) OnDefault(event event.Unhandled) (err error) {
|
||||||
err = fmt.Errorf("unexpected event during login: %#v", event)
|
if _, ok := event.Val.(proto_base.EncodeDecodeAble); !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
slog.Warn("unexpected packet during login serving", "packet", event.Val)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,7 +163,6 @@ func WithCompatibleVersions(versions ...int32) LoginServerSetting {
|
|||||||
func ServeLogin(c *proto.Conn, settings ...LoginServerSetting) (ret *LoginServer, err error) {
|
func ServeLogin(c *proto.Conn, settings ...LoginServerSetting) (ret *LoginServer, err error) {
|
||||||
ret = &LoginServer{Conn: c}
|
ret = &LoginServer{Conn: c}
|
||||||
ret.RegisterCritical(ret.OnDefault)
|
ret.RegisterCritical(ret.OnDefault)
|
||||||
ret.RegisterIgnore(event.Close{})
|
|
||||||
ret.RegisterCriticalUntilLatest(ret.OnHandshake)
|
ret.RegisterCriticalUntilLatest(ret.OnHandshake)
|
||||||
ret.RegisterCriticalUntilLatest(ret.OnLoginStart)
|
ret.RegisterCriticalUntilLatest(ret.OnLoginStart)
|
||||||
ret.RegisterCriticalUntilLatest(ret.OnLoginAcknowledged)
|
ret.RegisterCriticalUntilLatest(ret.OnLoginAcknowledged)
|
||||||
|
|||||||
Reference in New Issue
Block a user