aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/net/net_fake.go15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/net/net_fake.go b/src/net/net_fake.go
index 60b52b79fd..b7ecb39144 100644
--- a/src/net/net_fake.go
+++ b/src/net/net_fake.go
@@ -325,14 +325,27 @@ func (ffd *fakeNetFD) accept(laddr Addr) (*netFD, error) {
incoming []*netFD
ok bool
)
+ expired := ffd.readDeadline.Load().expired
select {
- case <-ffd.readDeadline.Load().expired:
+ case <-expired:
return nil, os.ErrDeadlineExceeded
case incoming, ok = <-ffd.incoming:
if !ok {
return nil, ErrClosed
}
+ select {
+ case <-expired:
+ ffd.incoming <- incoming
+ return nil, os.ErrDeadlineExceeded
+ default:
+ }
case incoming, ok = <-ffd.incomingFull:
+ select {
+ case <-expired:
+ ffd.incomingFull <- incoming
+ return nil, os.ErrDeadlineExceeded
+ default:
+ }
}
peer := incoming[0]