From 58bbdba722b8cf7e3ad4d4a7ba2e02faf76bbed5 Mon Sep 17 00:00:00 2001 From: Hchen Date: Wed, 23 Feb 2022 17:08:05 +0800 Subject: [PATCH] fix: fill readv eof --- connection_impl.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/connection_impl.go b/connection_impl.go index 7c6ed1f8..ed2acab1 100644 --- a/connection_impl.go +++ b/connection_impl.go @@ -444,15 +444,23 @@ func (c *connection) fill(need int) (err error) { for { n, err = readv(c.fd, c.inputs(c.inputBarrier.bs), c.inputBarrier.ivs) c.inputAck(n) - if n < pagesize || err != nil { + err = c.eofError(n, err) + if err != nil { break } } if c.inputBuffer.Len() >= need { return nil } - if err == nil { - err = Exception(ErrEOF, "") + return err +} + +func (c *connection) eofError(n int, err error) error { + if err == syscall.EINTR { + return nil + } + if n == 0 && err == nil { + return Exception(ErrEOF, "") } return err }