From 98f4de2e126c8e7f1e49c2c5fe3d1bd48d20f2c0 Mon Sep 17 00:00:00 2001 From: Cong Zhao Date: Tue, 26 Mar 2019 17:38:00 +0800 Subject: [PATCH 1/2] fix Start() reset nonblocking --- netpoll/netpoll_kqueue.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/netpoll/netpoll_kqueue.go b/netpoll/netpoll_kqueue.go index d604eb0..eacaeef 100644 --- a/netpoll/netpoll_kqueue.go +++ b/netpoll/netpoll_kqueue.go @@ -22,7 +22,7 @@ type poller struct { func (p poller) Start(desc *Desc, cb CallbackFn) error { n, events := toKevents(desc.event, true) - return p.Add(desc.fd(), events, n, func(kev Kevent) { + err := p.Add(desc.fd(), events, n, func(kev Kevent) { var ( event Event @@ -57,6 +57,8 @@ func (p poller) Start(desc *Desc, cb CallbackFn) error { cb(event) }) + setNonblock(desc.fd()) + return err } func (p poller) Stop(desc *Desc) error { From 89e55730294384b6da6102622a002b5902e41d2c Mon Sep 17 00:00:00 2001 From: Cong Zhao Date: Tue, 26 Mar 2019 18:42:02 +0800 Subject: [PATCH 2/2] fix poller reset blocking of connection --- netpoll/netpoll_epoll.go | 4 +++- netpoll/netpoll_kqueue.go | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/netpoll/netpoll_epoll.go b/netpoll/netpoll_epoll.go index 7f8a3b0..a548ad2 100644 --- a/netpoll/netpoll_epoll.go +++ b/netpoll/netpoll_epoll.go @@ -23,7 +23,7 @@ type poller struct { // Start implements Poller.Start() method. func (ep poller) Start(desc *Desc, cb CallbackFn) error { - return ep.Add(desc.fd(), toEpollEvent(desc.event), + err := ep.Add(desc.fd(), toEpollEvent(desc.event), func(ep EpollEvent) { var event Event @@ -49,6 +49,8 @@ func (ep poller) Start(desc *Desc, cb CallbackFn) error { cb(event) }, ) + setNonblock(desc.fd(), true) + return err } // Stop implements Poller.Stop() method. diff --git a/netpoll/netpoll_kqueue.go b/netpoll/netpoll_kqueue.go index eacaeef..c4b0fd1 100644 --- a/netpoll/netpoll_kqueue.go +++ b/netpoll/netpoll_kqueue.go @@ -22,7 +22,7 @@ type poller struct { func (p poller) Start(desc *Desc, cb CallbackFn) error { n, events := toKevents(desc.event, true) - err := p.Add(desc.fd(), events, n, func(kev Kevent) { + err := p.Add(desc.fd(), events, n, func(kev Kevent) { var ( event Event @@ -57,8 +57,8 @@ func (p poller) Start(desc *Desc, cb CallbackFn) error { cb(event) }) - setNonblock(desc.fd()) - return err + setNonblock(desc.fd(), true) + return err } func (p poller) Stop(desc *Desc) error {