Skip to content

Commit 31f1cac

Browse files
yuukiclaude
andauthored
fix: eliminate pointer allocation warnings in sync.Pool usage (SA6002) (#36)
Refactor buffer management in TCP and UDP server handlers to avoid unnecessary pointer allocations. Instead of taking addresses of slices that are already pointers from sync.Pool, properly handle the pointer types to resolve go-staticcheck SA6002 warnings. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <noreply@anthropic.com>
1 parent a2b6aa3 commit 31f1cac

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

server.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ var serveMsgBuf = sync.Pool{
2828
}
2929

3030
var bufUDPPool = sync.Pool{
31-
New: func() any { return make([]byte, UDPPacketSize) },
31+
New: func() any {
32+
buf := make([]byte, UDPPacketSize)
33+
return &buf
34+
},
3235
}
3336

3437
type ServerConfig struct {
@@ -137,8 +140,9 @@ func (s *Server) serveTCP(ctx context.Context) error {
137140
func handleConnection(conn net.Conn) error {
138141
defer conn.Close()
139142

140-
buf := *serveMsgBuf.Get().(*[]byte)
141-
defer serveMsgBuf.Put(&buf)
143+
bufPtr := serveMsgBuf.Get().(*[]byte)
144+
defer serveMsgBuf.Put(bufPtr)
145+
buf := *bufPtr
142146

143147
for {
144148
n, err := conn.Read(buf)
@@ -202,10 +206,11 @@ func (s *Server) serveUDP(ctx context.Context) error {
202206
}()
203207

204208
for {
205-
msg := bufUDPPool.Get().([]byte)
209+
msgPtr := bufUDPPool.Get().(*[]byte)
210+
msg := *msgPtr
206211
n, remoteAddr, err := ln.ReadFrom(msg)
207212
if err != nil {
208-
bufUDPPool.Put(msg)
213+
bufUDPPool.Put(msgPtr)
209214
select {
210215
case <-ctx.Done():
211216
return nil
@@ -215,14 +220,14 @@ func (s *Server) serveUDP(ctx context.Context) error {
215220
continue
216221
}
217222

218-
go func() {
219-
defer bufUDPPool.Put(msg)
223+
go func(msgPtr *[]byte, msg []byte) {
224+
defer bufUDPPool.Put(msgPtr)
220225
if _, err = ln.WriteTo(msg[:n], remoteAddr); err != nil {
221226
slog.Error("UDP write error",
222227
"remote_addr", remoteAddr,
223228
"error", err)
224229
}
225-
}()
230+
}(msgPtr, msg)
226231
}
227232
})
228233
}

0 commit comments

Comments
 (0)