Reviewers: golang-dev1, brainman,
Message:
Hello
golan...@googlegroups.com,
alex.b...@gmail.com (cc:
golan...@googlegroups.com),
I'd like you to review this change to
https://code.google.com/p/go
Description:
net: fix dial datagram on windows, plan 9
Fixes issue 5349.
Please review this at
https://codereview.appspot.com/8687045/
Affected files:
M src/pkg/net/dial_gen.go
M src/pkg/net/timeout_test.go
Index: src/pkg/net/dial_gen.go
===================================================================
--- a/src/pkg/net/dial_gen.go
+++ b/src/pkg/net/dial_gen.go
@@ -15,6 +15,13 @@
// hasn't been pushed down into the pollserver. (Plan 9 and some old
// versions of Windows)
func resolveAndDialChannel(net, addr string, localAddr Addr, deadline
time.Time) (Conn, error) {
+ if deadline.IsZero() {
+ ra, err := resolveAddr("dial", net, addr, noDeadline)
+ if err != nil {
+ return nil, err
+ }
+ return dial(net, addr, localAddr, ra, noDeadline)
+ }
timeout := deadline.Sub(time.Now())
if timeout < 0 {
timeout = 0
Index: src/pkg/net/timeout_test.go
===================================================================
--- a/src/pkg/net/timeout_test.go
+++ b/src/pkg/net/timeout_test.go
@@ -703,3 +703,22 @@
c.Write(buf[:])
}
}
+
+func TestDialDatagramWithNoDeadline(t *testing.T) {
+ ch := make(chan copyRes)
+ go func() {
+ c, err := Dial("udp4", "
127.0.0.1:514")
+ if err == nil {
+ c.Close()
+ }
+ ch <- copyRes{err: err}
+ }()
+ select {
+ case <-time.After(2 * time.Second):
+ t.Fatal("too slow")
+ case res := <-ch:
+ if res.err != nil {
+ t.Fatalf("Dial failed: %v", res.err)
+ }
+ }
+}