Skip to content

Commit 17af676

Browse files
authored
fix: avoid painc caused by writing to closed writechan (#318)
1 parent e85c62e commit 17af676

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

server/streamable_http.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,13 +352,16 @@ func (s *StreamableHTTPServer) handleGet(w http.ResponseWriter, r *http.Request)
352352
done := make(chan struct{})
353353
defer close(done)
354354
writeChan := make(chan any, 16)
355-
defer close(writeChan)
356355

357356
go func() {
358357
for {
359358
select {
360359
case nt := <-session.notificationChannel:
361-
writeChan <- &nt
360+
select {
361+
case writeChan <- &nt:
362+
case <-done:
363+
return
364+
}
362365
case <-done:
363366
return
364367
}
@@ -379,7 +382,11 @@ func (s *StreamableHTTPServer) handleGet(w http.ResponseWriter, r *http.Request)
379382
for {
380383
select {
381384
case <-ticker.C:
382-
writeChan <- message
385+
select {
386+
case writeChan <- message:
387+
case <-done:
388+
return
389+
}
383390
case <-done:
384391
return
385392
}

0 commit comments

Comments
 (0)