From 3600a9f6052344aad8b9058594167e2ccd287678 Mon Sep 17 00:00:00 2001 From: Zhuowei Wang Date: Thu, 24 Oct 2024 11:02:48 +0800 Subject: [PATCH] fix: dail connection return io timeout when ctx.Done happen --- net_polldesc.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/net_polldesc.go b/net_polldesc.go index 89becc90..c72bdcca 100644 --- a/net_polldesc.go +++ b/net_polldesc.go @@ -52,22 +52,21 @@ func (pd *pollDesc) WaitWrite(ctx context.Context) (err error) { } select { + case <-pd.writeTrigger: // triggered by poller case <-pd.closeTrigger: // triggered by poller // no need to detach, since poller has done it in OnHup. return Exception(ErrConnClosed, "by peer") - case <-pd.writeTrigger: // triggered by poller - err = nil case <-ctx.Done(): // triggered by ctx // deregister from poller, upper caller function will close fd pd.detach() - err = mapErr(ctx.Err()) + return mapErr(ctx.Err()) } // double check close trigger select { case <-pd.closeTrigger: return Exception(ErrConnClosed, "by peer") default: - return err + return nil } }