warn instead of crash on unexpected packet

This commit is contained in:
Admin Else
2026-04-02 18:49:50 +02:00
parent abb0fa4d37
commit 272dcb4d36
2 changed files with 9 additions and 4 deletions
+5 -2
View File
@@ -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
} }
+4 -2
View File
@@ -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)