mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
net: do not call syscall.Bind twice on windows
Fixes #5355. R=golang-dev, mikioh.mikioh, bradfitz, r CC=golang-dev https://golang.org/cl/8966046
This commit is contained in:
parent
2a1ca145cf
commit
ca6b1f3eeb
4 changed files with 50 additions and 14 deletions
|
|
@ -372,3 +372,38 @@ func TestDialFailPDLeak(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestDialer(t *testing.T) {
|
||||
ln, err := Listen("tcp4", "127.0.0.1:0")
|
||||
if err != nil {
|
||||
t.Fatalf("Listen failed: %v", err)
|
||||
}
|
||||
defer ln.Close()
|
||||
ch := make(chan error, 1)
|
||||
go func() {
|
||||
var err error
|
||||
c, err := ln.Accept()
|
||||
if err != nil {
|
||||
ch <- fmt.Errorf("Accept failed: %v", err)
|
||||
return
|
||||
}
|
||||
defer c.Close()
|
||||
ch <- nil
|
||||
}()
|
||||
|
||||
laddr, err := ResolveTCPAddr("tcp4", "127.0.0.1:0")
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveTCPAddr failed: %v", err)
|
||||
}
|
||||
d := &Dialer{LocalAddr: laddr}
|
||||
c, err := d.Dial("tcp4", ln.Addr().String())
|
||||
if err != nil {
|
||||
t.Fatalf("Dial failed: %v", err)
|
||||
}
|
||||
defer c.Close()
|
||||
c.Read(make([]byte, 1))
|
||||
err = <-ch
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue