@@ -0,0 +1,16 @@
+package common
+
+func SafeSend(ch chan bool, value bool) (closed bool) {
+ defer func() {
+ // Recover from panic if one occured. A panic would mean the channel was closed.
+ if recover() != nil {
+ closed = true
+ }
+ }()
+ // This will panic if the channel is closed.
+ ch <- value
+ // If the code reaches here, then the channel was not closed.
+ return false
+}
@@ -83,7 +83,7 @@ func openaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*O
// wait data out
time.Sleep(2 * time.Second)
}
- stopChan <- true
+ common.SafeSend(stopChan, true)
}()
setEventStreamHeaders(c)
c.Stream(func(w io.Writer) bool {