Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1122)

Side by Side Diff: src/pkg/net/sock_posix.go

Issue 6575050: code review 6575050: net: close dialing fds in DialTimeout (Closed)
Patch Set: diff -r c81f0e83b70b https://go.googlecode.com/hg/ Created 11 years, 6 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pkg/net/ipsock_posix.go ('k') | src/pkg/net/tcpsock_posix.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 The Go Authors. All rights reserved. 1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style 2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file. 3 // license that can be found in the LICENSE file.
4 4
5 // +build darwin freebsd linux netbsd openbsd windows 5 // +build darwin freebsd linux netbsd openbsd windows
6 6
7 // Sockets 7 // Sockets
8 8
9 package net 9 package net
10 10
11 import ( 11 import (
12 "io" 12 "io"
13 "syscall" 13 "syscall"
14 ) 14 )
15 15
16 var listenerBacklog = maxListenerBacklog() 16 var listenerBacklog = maxListenerBacklog()
17 17
18 // Generic socket creation. 18 // Generic socket creation.
19 func socket(net string, f, t, p int, ipv6only bool, ulsa, ursa syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (fd *netFD, err error) { 19 func socket(net string, f, t, p int, ipv6only bool, ulsa, ursa syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr, beforeConnect chan<- *netFD) (fd *netFD, er r error) {
20 // See ../syscall/exec_unix.go for description of ForkLock. 20 // See ../syscall/exec_unix.go for description of ForkLock.
21 syscall.ForkLock.RLock() 21 syscall.ForkLock.RLock()
22 s, err := syscall.Socket(f, t, p) 22 s, err := syscall.Socket(f, t, p)
23 if err != nil { 23 if err != nil {
24 syscall.ForkLock.RUnlock() 24 syscall.ForkLock.RUnlock()
25 return nil, err 25 return nil, err
26 } 26 }
27 syscall.CloseOnExec(s) 27 syscall.CloseOnExec(s)
28 syscall.ForkLock.RUnlock() 28 syscall.ForkLock.RUnlock()
29 29
(...skipping 13 matching lines...) Expand all
43 return nil, err 43 return nil, err
44 } 44 }
45 } 45 }
46 46
47 if fd, err = newFD(s, f, t, net); err != nil { 47 if fd, err = newFD(s, f, t, net); err != nil {
48 closesocket(s) 48 closesocket(s)
49 return nil, err 49 return nil, err
50 } 50 }
51 51
52 if ursa != nil { 52 if ursa != nil {
53 if beforeConnect != nil {
54 beforeConnect <- fd
55 }
53 if err = fd.connect(ursa); err != nil { 56 if err = fd.connect(ursa); err != nil {
54 closesocket(s) 57 closesocket(s)
55 fd.Close() 58 fd.Close()
56 return nil, err 59 return nil, err
57 } 60 }
58 fd.isConnected = true 61 fd.isConnected = true
59 } 62 }
60 63
61 lsa, _ := syscall.Getsockname(s) 64 lsa, _ := syscall.Getsockname(s)
62 var laddr Addr 65 var laddr Addr
(...skipping 11 matching lines...) Expand all
74 type writerOnly struct { 77 type writerOnly struct {
75 io.Writer 78 io.Writer
76 } 79 }
77 80
78 // Fallback implementation of io.ReaderFrom's ReadFrom, when sendfile isn't 81 // Fallback implementation of io.ReaderFrom's ReadFrom, when sendfile isn't
79 // applicable. 82 // applicable.
80 func genericReadFrom(w io.Writer, r io.Reader) (n int64, err error) { 83 func genericReadFrom(w io.Writer, r io.Reader) (n int64, err error) {
81 // Use wrapper to hide existing r.ReadFrom from io.Copy. 84 // Use wrapper to hide existing r.ReadFrom from io.Copy.
82 return io.Copy(writerOnly{w}, r) 85 return io.Copy(writerOnly{w}, r)
83 } 86 }
OLDNEW
« no previous file with comments | « src/pkg/net/ipsock_posix.go ('k') | src/pkg/net/tcpsock_posix.go » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b