diff options
Diffstat (limited to 'src/pkg/net/sock.go')
-rw-r--r-- | src/pkg/net/sock.go | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/pkg/net/sock.go b/src/pkg/net/sock.go index 8ad3548ad..933700af1 100644 --- a/src/pkg/net/sock.go +++ b/src/pkg/net/sock.go @@ -52,11 +52,16 @@ func socket(net string, f, p, t int, la, ra syscall.Sockaddr, toAddr func(syscal } } + if fd, err = newFD(s, f, p, net); err != nil { + closesocket(s) + return nil, err + } + if ra != nil { - e = syscall.Connect(s, ra) - if e != 0 { + if err = fd.connect(ra); err != nil { + fd.sysfd = -1 closesocket(s) - return nil, os.Errno(e) + return nil, err } } @@ -65,12 +70,7 @@ func socket(net string, f, p, t int, la, ra syscall.Sockaddr, toAddr func(syscal sa, _ = syscall.Getpeername(s) raddr := toAddr(sa) - fd, err = newFD(s, f, p, net, laddr, raddr) - if err != nil { - closesocket(s) - return nil, err - } - + fd.setAddr(laddr, raddr) return fd, nil } @@ -167,9 +167,9 @@ func (e *UnknownSocketError) String() string { func sockaddrToString(sa syscall.Sockaddr) (name string, err os.Error) { switch a := sa.(type) { case *syscall.SockaddrInet4: - return joinHostPort(IP(a.Addr[0:]).String(), itoa(a.Port)), nil + return JoinHostPort(IP(a.Addr[0:]).String(), itoa(a.Port)), nil case *syscall.SockaddrInet6: - return joinHostPort(IP(a.Addr[0:]).String(), itoa(a.Port)), nil + return JoinHostPort(IP(a.Addr[0:]).String(), itoa(a.Port)), nil case *syscall.SockaddrUnix: return a.Name, nil } |