mirror of
https://github.com/golang/go
synced 2024-11-19 22:14:43 -07:00
net: dialChannel should not treat an expired deadline as noDeadline.
Now, only a zero deadline is interpreted as noDeadline. Any other time in the past yields an immediate timeout. TestConnectDeadlineInThePast already covers this case. We just need to un-skip it for plan9, where dialChannel is used. Change-Id: I995fd1a632c31f8004dac772c3d7c43a2a5853b0 Reviewed-on: https://go-review.googlesource.com/8435 Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
This commit is contained in:
parent
5242d2cef4
commit
c50a8416c8
@ -12,13 +12,13 @@ import "time"
|
||||
// used on operating systems where the deadline hasn't been pushed
|
||||
// down into the pollserver. (Plan 9 and some old versions of Windows)
|
||||
func dialChannel(net string, ra Addr, dialer func(time.Time) (Conn, error), deadline time.Time) (Conn, error) {
|
||||
var timeout time.Duration
|
||||
if !deadline.IsZero() {
|
||||
timeout = deadline.Sub(time.Now())
|
||||
}
|
||||
if timeout <= 0 {
|
||||
if deadline.IsZero() {
|
||||
return dialer(noDeadline)
|
||||
}
|
||||
timeout := deadline.Sub(time.Now())
|
||||
if timeout <= 0 {
|
||||
return nil, &OpError{Op: "dial", Net: net, Addr: ra, Err: errTimeout}
|
||||
}
|
||||
t := time.NewTimer(timeout)
|
||||
defer t.Stop()
|
||||
type racer struct {
|
||||
|
@ -682,11 +682,6 @@ func TestAcceptDeadlineConnectionAvailable(t *testing.T) {
|
||||
// TestConnectDeadlineInThePast tests that connect deadlines work, even
|
||||
// if the connection can be established w/o blocking.
|
||||
func TestConnectDeadlineInThePast(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "plan9":
|
||||
t.Skipf("skipping test on %q", runtime.GOOS)
|
||||
}
|
||||
|
||||
ln := newLocalListener(t).(*TCPListener)
|
||||
defer ln.Close()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user