diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-07-11 16:06:43 +0300 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-07-19 18:32:12 +0300 |
| commit | 62f17157d8a182b13de4664b648dd1461f1c9dbc (patch) | |
| tree | cfdfa34fe4842d8a89adbe2c56f94959b87e560f /internal/server | |
| parent | ba47118e5171a602e90d22951997bf220fd8deb1 (diff) | |
Improved server logging/error handling
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/server.go | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/internal/server/server.go b/internal/server/server.go index a9f1852..1f6d27c 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -10,6 +10,7 @@ import ( "crypto/x509/pkix" "encoding/pem" "errors" + "fmt" "io" "log/slog" "math/big" @@ -17,6 +18,7 @@ import ( "os" "strconv" "sync" + "syscall" "time" "github.com/kyren223/eko/embeds" @@ -261,7 +263,11 @@ func (server *server) handleConnection(conn net.Conn) { for payload := range writeQueue { packet := packet.NewPacket(packet.NewMsgPackEncoder(payload)) if _, err := packet.Into(conn); err != nil { - slog.ErrorContext(ctx, "error sending packet", "error", err, "packet", packet.LogValue(), "payload", payload) + if errors.Is(err, syscall.EPIPE) { + slog.InfoContext(ctx, "client disconnected while sending packet", "error", err, "packet", packet.LogValue(), "payload", payload) + } else { + slog.ErrorContext(ctx, "error sending packet", "error", err, "packet", packet.LogValue(), "payload", payload) + } return } slog.InfoContext(ctx, "packet sent", "packet", packet.LogValue(), "payload", payload) @@ -351,7 +357,7 @@ func processPacket(ctx context.Context, sess *session.Session, pkt packet.Packet func processRequest(ctx context.Context, sess *session.Session, request packet.Payload) packet.Payload { slog.InfoContext(ctx, "processing request", - "request", request, "request_type", request.Type(), + "request", request, "request_type", request.Type().String(), ) if !sess.IsTosAccepted() { @@ -392,7 +398,9 @@ func processRequest(ctx context.Context, sess *session.Session, request packet.P response = timeout(5*time.Millisecond, api.Authenticate, ctx, sess, request) default: - response = &packet.Error{Error: "use of disallowed packet type for request"} + response = &packet.Error{Error: fmt.Sprintf( + "use of disallowed packet type %v", request.Type().String(), + )} } return response @@ -482,7 +490,7 @@ func timeout[T packet.Payload]( return response case <-ctx.Done(): slog.WarnContext(ctx, "request timeout", - "request", request, "request_type", request.Type(), + "request", request, "request_type", request.Type().String(), ) return &packet.Error{Error: "request timeout"} } |
