ln := newLocalListener(t, "tcp")
defer ln.Close()
- max := time.NewTimer(100 * time.Millisecond)
- defer max.Stop()
+ maxch := make(chan *time.Timer)
ch := make(chan error)
go func() {
if err := ln.(*TCPListener).SetDeadline(time.Now().Add(-5 * time.Second)); err != nil {
if err := ln.(*TCPListener).SetDeadline(noDeadline); err != nil {
t.Error(err)
}
+ maxch <- time.NewTimer(100 * time.Millisecond)
_, err := ln.Accept()
ch <- err
}()
+ max := <-maxch
+ defer max.Stop()
+
select {
case err := <-ch:
if perr := parseAcceptError(err); perr != nil {
}
defer c.Close()
- max := time.NewTimer(100 * time.Millisecond)
- defer max.Stop()
+ maxch := make(chan *time.Timer)
ch := make(chan error)
go func() {
if err := c.SetDeadline(time.Now().Add(-5 * time.Second)); err != nil {
if err := c.SetReadDeadline(noDeadline); err != nil {
t.Error(err)
}
+ maxch <- time.NewTimer(100 * time.Millisecond)
var b [1]byte
_, err := c.Read(b[:])
ch <- err
}()
+ max := <-maxch
+ defer max.Stop()
+
select {
case err := <-ch:
if perr := parseReadError(err); perr != nil {
}
defer c.Close()
- max := time.NewTimer(100 * time.Millisecond)
- defer max.Stop()
+ maxch := make(chan *time.Timer)
ch := make(chan error)
go func() {
if err := c.SetDeadline(time.Now().Add(-5 * time.Second)); err != nil {
if err := c.SetWriteDeadline(noDeadline); err != nil {
t.Error(err)
}
+ maxch <- time.NewTimer(100 * time.Millisecond)
var b [1]byte
for {
if _, err := c.Write(b[:]); err != nil {
}
}()
+ max := <-maxch
+ defer max.Stop()
+
select {
case err := <-ch:
if perr := parseWriteError(err); perr != nil {