]> Cypherpunks repositories - gostls13.git/commitdiff
net: dialChannel should not treat an expired deadline as noDeadline.
authorPaul Marks <pmarks@google.com>
Fri, 3 Apr 2015 02:13:17 +0000 (19:13 -0700)
committerMikio Hara <mikioh.mikioh@gmail.com>
Mon, 6 Apr 2015 01:03:31 +0000 (01:03 +0000)
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>
src/net/dial_gen.go
src/net/timeout_test.go

index 654ef9383af8a9f989260748bf4358ae2c702681..3816844b2603353dad9e0300ab81eeca73ffbbe2 100644 (file)
@@ -12,12 +12,12 @@ 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 deadline.IsZero() {
+               return dialer(noDeadline)
        }
+       timeout := deadline.Sub(time.Now())
        if timeout <= 0 {
-               return dialer(noDeadline)
+               return nil, &OpError{Op: "dial", Net: net, Addr: ra, Err: errTimeout}
        }
        t := time.NewTimer(timeout)
        defer t.Stop()
index b46321b13b357f38c9ed6628d0abc41f04c98b6e..361f822d9ebc02583488d2d5d76183ed190fab90 100644 (file)
@@ -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()