File tree Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change @@ -11,12 +11,19 @@ import (
11
11
"net/http"
12
12
)
13
13
14
+ var (
15
+ emptyMessagesLimit = 100
16
+ ErrTooManyEmptyStreamMessages = errors .New ("stream has sent too many empty messages" )
17
+ )
18
+
14
19
type CompletionStream struct {
15
20
reader * bufio.Reader
16
21
response * http.Response
17
22
}
18
23
19
24
func (stream * CompletionStream ) Recv () (response CompletionResponse , err error ) {
25
+ emptyMessagesCount := 0
26
+
20
27
waitForData:
21
28
line , err := stream .reader .ReadBytes ('\n' )
22
29
if err != nil {
@@ -28,6 +35,12 @@ waitForData:
28
35
var headerData = []byte ("data: " )
29
36
line = bytes .TrimSpace (line )
30
37
if ! bytes .HasPrefix (line , headerData ) {
38
+ emptyMessagesCount ++
39
+ if emptyMessagesCount > emptyMessagesLimit {
40
+ err = ErrTooManyEmptyStreamMessages
41
+ return
42
+ }
43
+
31
44
goto waitForData
32
45
}
33
46
You can’t perform that action at this time.
0 commit comments