From 7eea63b3511228d68351af9920ff59e17f04e63e Mon Sep 17 00:00:00 2001 From: eyedeekay Date: Sun, 1 Jun 2025 18:14:24 -0400 Subject: [PATCH] Fix close race in DatagramSession --- raw/dial.go | 6 ------ raw/read.go | 7 ++++++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/raw/dial.go b/raw/dial.go index 0547f12..6957d5e 100644 --- a/raw/dial.go +++ b/raw/dial.go @@ -2,7 +2,6 @@ package raw import ( "context" - "fmt" "net" "time" @@ -97,8 +96,3 @@ func (rs *RawSession) DialI2PContext(ctx context.Context, addr i2pkeys.I2PAddr) logger.WithField("session_id", rs.ID()).Debug("Successfully created I2P raw connection") return conn, nil } - -// generateSessionID generates a unique session identifier -func generateSessionID() string { - return fmt.Sprintf("raw_%d", time.Now().UnixNano()) -} diff --git a/raw/read.go b/raw/read.go index 779962b..6c7d4a7 100644 --- a/raw/read.go +++ b/raw/read.go @@ -39,7 +39,12 @@ func (r *RawReader) Close() error { return nil } - logger := log.WithField("session_id", r.session.ID()) + // Fix: Safe session ID retrieval with nil checks + sessionID := "unknown" + if r.session != nil && r.session.BaseSession != nil { + sessionID = r.session.ID() + } + logger := log.WithField("session_id", sessionID) logger.Debug("Closing RawReader") r.closed = true