Skip to content

Commit 84658f7

Browse files
committed
fix: dail connection return io timeout when ctx.Done happen
1 parent 8a1f559 commit 84658f7

2 files changed

Lines changed: 4 additions & 5 deletions

File tree

connection_test.go

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

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)