Skip to content

Commit dbaf06c

Browse files
authored
Handle error message in idle connections (#266)
1 parent 697966c commit dbaf06c

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

internal/client/edgedb.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,31 @@ func (c *protocolConnection) releaseReader(r *buff.Reader) error {
124124

125125
go func() {
126126
for r.Next(c.acquireReaderSignal) {
127-
if e := c.fallThrough(r); e != nil {
128-
log.Println(e)
129-
_ = c.soc.Close()
130-
c.readerChan <- r
131-
return
127+
switch Message(r.MsgType) {
128+
case ErrorResponse:
129+
err := decodeErrorResponseMsg(r, "")
130+
log.Println("from background:", err)
131+
r.Err = wrapAll(r.Err, err)
132+
default:
133+
if e := c.fallThrough(r); e != nil {
134+
log.Println("fall through in background:", e)
135+
r.Err = wrapAll(r.Err, e)
136+
err := c.soc.Close()
137+
if err != nil {
138+
log.Println("error closing socket:", err)
139+
}
140+
c.readerChan <- r
141+
return
142+
}
132143
}
133144
}
134145

146+
if r.Err != nil {
147+
err := c.soc.Close()
148+
if err != nil {
149+
log.Println("error closing socket:", err)
150+
}
151+
}
135152
c.readerChan <- r
136153
}()
137154

0 commit comments

Comments
 (0)