Skip to content

Commit be31734

Browse files
committed
fix: dail connection return io timeout when ctx.Done happen
1 parent fa99a24 commit be31734

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

connection_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,7 @@ func TestConnectionDailTimeoutAndClose(t *testing.T) {
767767
go func() {
768768
defer wg.Done()
769769
conn, err := DialConnection("tcp", address, time.Nanosecond)
770-
Assert(t, err == nil || strings.Contains(err.Error(), "i/o timeout"))
770+
Assert(t, err == nil || strings.Contains(err.Error(), "i/o timeout"), err)
771771
_ = conn
772772
}()
773773
}

net_polldesc.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,21 @@ func (pd *pollDesc) WaitWrite(ctx context.Context) (err error) {
5252
}
5353

5454
select {
55+
case <-pd.writeTrigger: // triggered by poller
5556
case <-pd.closeTrigger: // triggered by poller
5657
// no need to detach, since poller has done it in OnHup.
5758
return Exception(ErrConnClosed, "by peer")
58-
case <-pd.writeTrigger: // triggered by poller
59-
err = nil
6059
case <-ctx.Done(): // triggered by ctx
6160
// deregister from poller, upper caller function will close fd
6261
pd.detach()
63-
err = mapErr(ctx.Err())
62+
return mapErr(ctx.Err())
6463
}
6564
// double check close trigger
6665
select {
6766
case <-pd.closeTrigger:
6867
return Exception(ErrConnClosed, "by peer")
6968
default:
70-
return err
69+
return nil
7170
}
7271
}
7372

0 commit comments

Comments
 (0)