summaryrefslogtreecommitdiff
path: root/internal/server/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server/server.go')
-rw-r--r--internal/server/server.go27
1 files changed, 13 insertions, 14 deletions
diff --git a/internal/server/server.go b/internal/server/server.go
index 35cd0f3..92d10f9 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -83,12 +83,12 @@ func (s *server) AddSession(session *session.Session, userId snowflake.ID, pubKe
slog.Info("closed due to new connection from another location",
ctxkeys.IpAddr.String(), sess.Addr(),
ctxkeys.UserID.String(), sess.ID(),
- ctxkeys.EvictedBy.String(), session.Addr(),
+ "evicted_by", session.Addr(),
)
slog.Info("this session evicted another session",
ctxkeys.IpAddr.String(), session.Addr(),
ctxkeys.UserID.String(), session.ID(),
- ctxkeys.Evicted.String(), sess.Addr(),
+ "evicted", sess.Addr(),
)
}
@@ -102,7 +102,7 @@ func EvictSession(sess *session.Session) {
payload := &packet.Error{
Error: "new connection from another location, closing this one",
}
- sess.Write(ctx, api.WrapPayload(payload))
+ sess.Write(ctx, payload)
sess.Close()
}
@@ -209,7 +209,8 @@ func (server *server) handleConnection(conn net.Conn) {
defer conn.Close() // To unblock reader
writeQueue := sess.Read()
- for packet := range writeQueue {
+ for payload := range writeQueue {
+ packet := packet.NewPacket(packet.NewMsgPackEncoder(payload))
if _, err := packet.Into(conn); err != nil {
// TODO: probably should add this to prevent the
// "use of closed connection" error, as it's intended to happen
@@ -217,10 +218,10 @@ func (server *server) handleConnection(conn net.Conn) {
// if !errors.Is(err, net.ErrClosed) {
// log.Println(addr, err)
// }
- slog.ErrorContext(ctx, "error sending packet", "error", err, "packet", packet)
+ slog.ErrorContext(ctx, "error sending packet", "error", err, "packet", packet.LogValue(), "payload", payload)
return
}
- slog.InfoContext(ctx, "packet sent", "packet", packet)
+ slog.InfoContext(ctx, "packet sent", "packet", packet.LogValue(), "payload", payload)
}
}()
@@ -253,7 +254,7 @@ func (server *server) handleConnection(conn net.Conn) {
n, err := conn.Read(buffer)
if err != nil {
if errors.Is(err, io.EOF) {
- slog.InfoContext(ctx, "closed gracefully")
+ slog.InfoContext(ctx, "closing gracefully")
} else {
slog.ErrorContext(ctx, "failed reading from buffer", "error", err)
}
@@ -267,7 +268,7 @@ func (server *server) handleConnection(conn net.Conn) {
}
if err != nil {
writerWg.Add(1)
- sess.Write(ctx, api.WrapPayload(&packet.Error{Error: err.Error()}))
+ sess.Write(ctx, &packet.Error{Error: err.Error()})
writerWg.Done()
slog.WarnContext(ctx, "received malformed packet", "error", err)
break
@@ -290,15 +291,14 @@ func processPacket(ctx context.Context, sess *session.Session, pkt packet.Packet
// Nil is ok if responses were handled manually using sess.Write()
if response != nil {
- ok := sess.Write(ctx, api.WrapPayload(response))
+ ok := sess.Write(ctx, response)
assert.Assert(ok, "context is never done and write will panic if queue is closed")
}
}
func processRequest(ctx context.Context, sess *session.Session, request packet.Payload) packet.Payload {
slog.InfoContext(ctx, "processing request",
- ctxkeys.PayloadType.String(),
- request.Type(), ctxkeys.Payload.String(), request,
+ "request", request, "request_type", request.Type(),
)
if !sess.IsTosAccepted() {
@@ -429,8 +429,7 @@ func timeout[T packet.Payload](
return response
case <-ctx.Done():
slog.WarnContext(ctx, "request timeout",
- ctxkeys.Payload.String(), request,
- ctxkeys.PayloadType.String(), request.Type(),
+ "request", request, "request_type", request.Type(),
)
return &packet.Error{Error: "request timeout"}
}
@@ -448,5 +447,5 @@ func sendTosInfo(ctx context.Context, sess *session.Session) bool {
PrivacyPolicy: privacy,
Date: date,
}
- return sess.Write(ctx, api.WrapPayload(payload))
+ return sess.Write(ctx, payload)
}