summaryrefslogtreecommitdiff
path: root/src/net/fd_unix.go
Commit message (Collapse)AuthorAgeFilesLines
* all: use new "unix" build tag where appropriateIan Lance Taylor2022-03-291-1/+1
| | | | | | | | | | For #20322 For #51572 Change-Id: Id0b4799d097d01128e98ba4cc0092298357bca45 Reviewed-on: https://go-review.googlesource.com/c/go/+/389935 Trust: Ian Lance Taylor <iant@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
* net: optimize ctxDone usageMikhail Faraponov2021-11-181-2/+3
| | | | | | | | | | | | Change-Id: I6db6fcf0ebe36da77af062114b5264405f15fee8 GitHub-Last-Rev: 80a97262bb220bb3958c94016eadf385cdf915e8 GitHub-Pull-Request: golang/go#49620 Reviewed-on: https://go-review.googlesource.com/c/go/+/364514 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Damien Neil <dneil@google.com> Trust: Damien Neil <dneil@google.com>
* net: use Done rather than comparing with context.BackgroundMikhail Faraponov2021-11-121-3/+2
| | | | | | | | | | | Fixes #49023 Change-Id: I3de70f8a25f4ba8a0fb8bb96581371e33fde2f7a GitHub-Last-Rev: b7ec9405adc77ec513df344f2ad33801feb2d3ca GitHub-Pull-Request: golang/go#49024 Reviewed-on: https://go-review.googlesource.com/c/go/+/356471 Reviewed-by: Ian Lance Taylor <iant@golang.org> Trust: Damien Neil <dneil@google.com>
* all: go fix -fix=buildtag std cmd (except for bootstrap deps, vendor)Russ Cox2021-10-281-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | When these packages are released as part of Go 1.18, Go 1.16 will no longer be supported, so we can remove the +build tags in these files. Ran go fix -fix=buildtag std cmd and then reverted the bootstrapDirs as defined in src/cmd/dist/buildtool.go, which need to continue to build with Go 1.4 for now. Also reverted src/vendor and src/cmd/vendor, which will need to be updated in their own repos first. Manual changes in runtime/pprof/mprof_test.go to adjust line numbers. For #41184. Change-Id: Ic0f93f7091295b6abc76ed5cd6e6746e1280861e Reviewed-on: https://go-review.googlesource.com/c/go/+/344955 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
* all: go fmt std cmd (but revert vendor)Russ Cox2021-02-201-0/+1
| | | | | | | | | | | | | | | | Make all our package sources use Go 1.17 gofmt format (adding //go:build lines). Part of //go:build change (#41184). See https://golang.org/design/draft-gobuild Change-Id: Ia0534360e4957e58cd9a18429c39d0e32a6addb4 Reviewed-on: https://go-review.googlesource.com/c/go/+/294430 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: merge common Unix/Windows methodsIan Lance Taylor2020-03-201-86/+8
| | | | | | | | | | | | | | | When we added the internal/poll package, the Unix and Windows implementations of several netFD methods became exactly the same, except for using a different name for the string passed to wrapSyscallError. One case is not an exact duplicate: we slightly tweak the implementation of (*netFD).shutdown on Windows to wrap the error. Change-Id: I3d87a317d5468ff8f1958d86f6189ea1ba697e9a Reviewed-on: https://go-review.googlesource.com/c/go/+/224140 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
* net: fix improper Context.Deadline usage in DialContextSergey Zagursky2019-11-151-1/+1
| | | | | | | | | | | | | | | | | The existing implementation is erroneously assume that having no deadline in context.Context means that time returned from Deadline method will have IsZero() == true. But technically speaking this is an invalid assumption. The context.Context interface specification doesn't specify what time should be returned from Deadline method when there is no deadline set. It only specifies that second result of Deadline should be false. Fixes #35594 Change-Id: Ife00aad77ab3585e469f15017550ac6c0431b140 Reviewed-on: https://go-review.googlesource.com/c/go/+/207297 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* all: remove the nacl port (part 1)Brad Fitzpatrick2019-10-091-1/+1
| | | | | | | | | | | | | | | | | | You were a useful port and you've served your purpose. Thanks for all the play. A subsequent CL will remove amd64p32 (including assembly files and toolchain bits) and remaining bits. The amd64p32 removal will be separated into its own CL in case we want to support the Linux x32 ABI in the future and want our old amd64p32 support as a starting point. Updates #30439 Change-Id: Ia3a0c7d49804adc87bf52a4dea7e3d3007f2b1cd Reviewed-on: https://go-review.googlesource.com/c/go/+/199499 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* net: close correct file descriptor when netpoll registration failsAndrei Tudor Călin2019-09-231-1/+1
| | | | | | | | | | | | | | In (*netFD).accept, if initializing the *netFD associated with the new connection fails, the listen FD is closed, rather than the FD associated with the new connection. Close the correct FD instead. Fixes #34392 Change-Id: I7bf3469d661e6d30cbd4b12f5f5fd330a81a541b Reviewed-on: https://go-review.googlesource.com/c/go/+/196778 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* all: add new GOOS=illumos, split out of GOOS=solarisJoshua M. Clulow2019-04-301-6/+6
| | | | | | | | | | | | | | | | Like GOOS=android which implies the "linux" build tag, GOOS=illumos implies the "solaris" build tag. This lets the existing ecosystem of packages still work on illumos, but still permits packages to start differentiating between solaris and illumos. Fixes #20603 Change-Id: I8f4eabf1a66060538dca15d7658c1fbc6c826622 Reviewed-on: https://go-review.googlesource.com/c/go/+/174457 Run-TryBot: Benny Siegert <bsiegert@gmail.com> Reviewed-by: Benny Siegert <bsiegert@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* net: add AIX operating systemClément Chigot2018-10-101-1/+1
| | | | | | | | | | | | | This commit adds AIX operating system to net package for ppc64 architecture. Updates: #25893 Change-Id: I46bbc7b03931019beb969443cb3f9a756956c66c Reviewed-on: https://go-review.googlesource.com/c/138724 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: improve ExampleUDPConn_WriteTo docsMikio Hara2018-06-261-1/+1
| | | | | | | | | | Also updates comment on isConnected field of netFD for clarification. Change-Id: Icb1b0332e3b4c7802eae00ddc26cd5ba54c82dc2 Reviewed-on: https://go-review.googlesource.com/120955 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* os, net: avoid races between dup, set-blocking-mode, and closingIan Lance Taylor2018-06-221-36/+4
| | | | | | | | | | | Fixes #24481 Fixes #24483 Change-Id: Id7da498425a440c91582aa5480c253ae7a9c932c Reviewed-on: https://go-review.googlesource.com/119955 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* net: add js/wasm architectureRichard Musiol2018-06-041-0/+13
| | | | | | | | | | | | | | | | This commit adds the js/wasm architecture to the net package. The net package is not supported by js/wasm, but a simple fake networking is available so tests of other packages that require basic TCP sockets can pass. The tests of the net package itself are mostly disabled. Updates #18892 Change-Id: Id287200c39f0a3e23d20ef17260ca15ccdcca032 Reviewed-on: https://go-review.googlesource.com/109995 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* all: remove support for macOS 10.9 and earlierBrad Fitzpatrick2018-05-291-13/+0
| | | | | | | | | Updates #23122 Change-Id: I4c12ec5cb1a1f15d7858f3deab636710c0660e26 Reviewed-on: https://go-review.googlesource.com/115038 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: calling File leaves the socket in nonblocking modeMichael Fraenkel2018-04-191-8/+0
| | | | | | | | | | | | | On Unix systems, the underlying socket is no longer forced into blocking mode. Fixes #24942 Change-Id: I3e0c503c72df0844e30a63af298691dedacd1f46 Reviewed-on: https://go-review.googlesource.com/108297 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: map context errors from aborted dial to internal net package errorsBen Burkert2018-03-291-1/+1
| | | | | | | | | | | | | | | Map the error returned when a dial is aborted from the context package error to the internal net package error. For example, context.Canceled errors map to errCanceled, and context.DeadlineExceeded errors map to poll.ErrTimeout. Fixes #23648 Change-Id: Idf9d3d08052d540740c0b054503aaed931dc5b1e Reviewed-on: https://go-review.googlesource.com/103518 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: report connect error as coming from "connect"Ian Lance Taylor2018-01-031-1/+1
| | | | | | | | | | | | | | We retrieve an error using getsockopt with SO_ERROR. We were reporting the error as coming from "getsockopt", but really it is coming from "connect". It is not getsockopt that failed. Fixes #19302 Change-Id: I510ab76e4b04c70cd9dfdfc46d9a410bf653d017 Reviewed-on: https://go-review.googlesource.com/85997 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* net, os: don't wait for Close in blocking modeIan Lance Taylor2017-12-141-1/+1
| | | | | | | | | | Updates #7970 Updates #21856 Updates #23111 Change-Id: I0cd0151fcca740c40c3c976f941b04e98e67b0bf Reviewed-on: https://go-review.googlesource.com/83715 Reviewed-by: Russ Cox <rsc@golang.org>
* net: handle spurious netpoll wakeups in connectIan Lance Taylor2017-06-151-21/+19
| | | | | | | | | | | | | | | | | | | | In some cases the netpoll code can cause a spurious wakeup. This is normally harmless, as the woken up code simply retries the operation. However, for connect, the test we were using to see whether the connect had succeeded (setsockopt(SO_ERROR)) was not reliable in the case of a spurious wakeup. Change to using a reliable test (getpeername). On Darwin we used a different technique: a second call to connect; change Darwin to use getpeername as well. Return the result of getpeername to avoid having to call it twice. Fixes #19289. Change-Id: I119ec8e7a41f482f1e590d4c65a37f6103fa22d9 Reviewed-on: https://go-review.googlesource.com/45815 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* os, net, internal/poll: return consistent error for closed socketIan Lance Taylor2017-04-261-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | In the past we returned "use of closed network connection" when using a closed network descriptor in some way. In CL 36799 that was changed to return "use of closed file or network connection". Because programs have no access to a value of this error type (see issue #4373) they resort to doing direct string comparisons (see issue #19252). This CL restores the old error string so that we don't break programs unnecessarily with the 1.9 release. This adds a test to the net package for the expected string. For symmetry check that the os package returns the expected error, which for os already exists as os.ErrClosed. Updates #4373. Fixed #19252. Change-Id: I5b83fd12cfa03501a077cad9336499b819f4a38b Reviewed-on: https://go-review.googlesource.com/39997 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
* net: delay IP protocol stack-snooping system callsMikio Hara2017-04-151-3/+0
| | | | | | | | | | | | | | | | | This change delays IP protocol stack-snooping system calls until the start of connection setup for the better experience with some system call auditing, such as seccomp on Linux. See #16789 for examples. Also updates the documentation on favoriteAddrFamily, which is the owner of stack-snooping system calls. Fixes #16789. Change-Id: I4af27bc1ed06ffb1f657b6f6381c328c1f41c66c Reviewed-on: https://go-review.googlesource.com/40750 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* internal/poll: rename RecvFrom to ReadFrom for consistencyMikio Hara2017-04-131-1/+1
| | | | | | | | | | Also adds missing docs. Change-Id: Ibd8dbe8441bc7a41f01ed2e2033db98e479a5176 Reviewed-on: https://go-review.googlesource.com/40412 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: refactor poller into new internal/poll packageIan Lance Taylor2017-02-131-252/+58
| | | | | | | | | | | | | | | | | | | This will make it possible to use the poller with the os package. This is a lot of code movement but the behavior is intended to be unchanged. Update #6817. Update #7903. Update #15021. Update #18507. Change-Id: I1413685928017c32df5654ded73a2643820977ae Reviewed-on: https://go-review.googlesource.com/36799 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
* net: break up >1GB reads and writes on stream connectionsRuss Cox2016-10-291-2/+10
| | | | | | | | | | | | | Also fix behavior of Buffers.WriteTo when writev returns an error. Fixes #16266. Change-Id: Idc9503408ce2cb460663768fab86035cbab11aef Reviewed-on: https://go-review.googlesource.com/31584 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: add Buffers type, do writev on unixBrad Fitzpatrick2016-09-291-0/+3
| | | | | | | | | | | | No fast path currently for solaris, windows, nacl, plan9. Fixes #13451 Change-Id: I24b3233a2e3a57fc6445e276a5c0d7b097884007 Reviewed-on: https://go-review.googlesource.com/29951 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* net: prevent cancelation goroutine from adjusting fd timeout after connectBrad Fitzpatrick2016-08-021-16/+39
| | | | | | | | | | | | This was previously fixed in https://golang.org/cl/21497 but not enough. Fixes #16523 Change-Id: I678543a656304c82d654e25e12fb094cd6cc87e8 Reviewed-on: https://go-review.googlesource.com/25330 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* net: don't return io.EOF from zero byte readsBrad Fitzpatrick2016-05-191-0/+8
| | | | | | | | Updates #15735 Change-Id: I42ab2345443bbaeaf935d683460fc2c941b7679c Reviewed-on: https://go-review.googlesource.com/23227 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: context plumbing, add Dialer.DialContextBrad Fitzpatrick2016-04-151-28/+26
| | | | | | | | | | | | For #12580 (http.Transport tracing/analytics) Updates #13021 Change-Id: I126e494a7bd872e42c388ecb58499ecbf0f014cc Reviewed-on: https://go-review.googlesource.com/22101 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
* net: wait for cancelation goroutine before returning from connect.Paul Marks2016-04-051-1/+5
| | | | | | | | | | | | | | This fixes a race which made it possible to cancel a connection after returning from net.Dial. Fixes #15035 Fixes #15078 Change-Id: Iec6215009538362f7ad9f408a33549f3e94d1606 Reviewed-on: https://go-review.googlesource.com/21497 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* net: factor out fdMutex-related methods on netFDMikio Hara2016-04-041-49/+0
| | | | | | | | Also updates documentation. Change-Id: Idb0fc0feed61407f7f07eab81ce82b55ffde5040 Reviewed-on: https://go-review.googlesource.com/21446 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* net: make unexposed methods start with lowercase lettersMikio Hara2016-03-171-25/+25
| | | | | | | | | | | | | | This change makes unexposed methods start with lowercase letters for avoiding unnecessary confusion because the net package uses many embedding structures and intrefaces for controlling exposure of APIs. Note that this change leaves DNS-related methods as they are. Change-Id: I253758d1659175c5d0af6b2efcd30ce83f46543d Reviewed-on: https://go-review.googlesource.com/20784 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: prevent spurious TCP connection setup notification on darwinMikio Hara2016-03-161-1/+10
| | | | | | | | | | | | | | | | | On the latest darwin kernels, kevent in runtime-integrated network poller sometimes reports SYN-SENT state sockets as ESTABLISHED ones, though it's still unclear what's the root cause. This change prevents such spurious notifications by additional connect system calls. Fixes #14548. Change-Id: Ie29788e38ca735ca77259befeba3229d6a30ac52 Reviewed-on: https://go-review.googlesource.com/20468 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* all: single space after period.Brad Fitzpatrick2016-03-021-2/+2
| | | | | | | | | | | | | | | | | | | | The tree's pretty inconsistent about single space vs double space after a period in documentation. Make it consistently a single space, per earlier decisions. This means contributors won't be confused by misleading precedence. This CL doesn't use go/doc to parse. It only addresses // comments. It was generated with: $ perl -i -npe 's,^(\s*// .+[a-z]\.) +([A-Z]),$1 $2,' $(git grep -l -E '^\s*//(.+\.) +([A-Z])') $ go test go/doc -update Change-Id: Iccdb99c37c797ef1f804a94b22ba5ee4b500c4f7 Reviewed-on: https://go-review.googlesource.com/20022 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Dave Day <djd@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* net: add Dialer.Cancel to cancel pending dialsBrad Fitzpatrick2015-12-151-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Dialer.Cancel is a new optional <-chan struct{} channel whose closure indicates that the dial should be canceled. It is compatible with the x/net/context and http.Request.Cancel types. Tested by hand with: package main import ( "log" "net" "time" ) func main() { log.Printf("start.") var d net.Dialer cancel := make(chan struct{}) time.AfterFunc(2*time.Second, func() { log.Printf("timeout firing") close(cancel) }) d.Cancel = cancel c, err := d.Dial("tcp", "192.168.0.1:22") if err != nil { log.Print(err) return } log.Fatalf("unexpected connect: %v", c) } Which says: 2015/12/14 22:24:58 start. 2015/12/14 22:25:00 timeout firing 2015/12/14 22:25:00 dial tcp 192.168.0.1:22: operation was canceled Fixes #11225 Change-Id: I2ef39e3a540e29fe6bfec03ab7a629a6b187fcb3 Reviewed-on: https://go-review.googlesource.com/17821 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* all: link to https instead of httpBrad Fitzpatrick2015-07-111-1/+1
| | | | | | | | | | | | | The one in misc/makerelease/makerelease.go is particularly bad and probably warrants rotating our keys. I didn't update old weekly notes, and reverted some changes involving test code for now, since we're late in the Go 1.5 freeze. Otherwise, the rest are all auto-generated changes, and all manually reviewed. Change-Id: Ia2753576ab5d64826a167d259f48a2f50508792d Reviewed-on: https://go-review.googlesource.com/12048 Reviewed-by: Rob Pike <r@golang.org>
* Revert "net, internal/syscall/unix: add SocketConn, SocketPacketConn"Mikio Hara2015-07-021-51/+0
| | | | | | | | | | | | | | | | This reverts commit 6f7961da28232c609f7c51b3bed7f15db7dd33e1. Russ suggests changing the frozon syscall package and obviously it's a better solution. Perhaps he will also let me know the way how to get the project owners to agree later. Fixes #11492. Change-Id: I98f9f366b72b85db54b4acfc3a604b62fb6d783c Reviewed-on: https://go-review.googlesource.com/11854 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* net, internal/syscall/unix: add SocketConn, SocketPacketConnMikio Hara2015-05-131-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | FileConn and FilePacketConn APIs accept user-configured socket descriptors to make them work together with runtime-integrated network poller, but there's a limitation. The APIs reject protocol sockets that are not supported by standard library. It's very hard for the net, syscall packages to look after all platform, feature-specific sockets. This change allows various platform, feature-specific socket descriptors to use runtime-integrated network poller by using SocketConn, SocketPacketConn APIs that bridge between the net, syscall packages and platforms. New exposed APIs: pkg net, func SocketConn(*os.File, SocketAddr) (Conn, error) pkg net, func SocketPacketConn(*os.File, SocketAddr) (PacketConn, error) pkg net, type SocketAddr interface { Addr, Raw } pkg net, type SocketAddr interface, Addr([]uint8) Addr pkg net, type SocketAddr interface, Raw(Addr) []uint8 Fixes #10565. Change-Id: Iec57499b3d84bb5cb0bcf3f664330c535eec11e3 Reviewed-on: https://go-review.googlesource.com/9275 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: drop unnecessary castMikio Hara2015-05-111-2/+2
| | | | | | Change-Id: I9b058472f5b4943db6e6f1c1243411ce61624c18 Reviewed-on: https://go-review.googlesource.com/9916 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* net: fix inconsistent errorsMikio Hara2015-05-051-11/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These a series of changes fix inconsistent errors on the package net APIs. Now almost all the APIs return OpError as a common error type except Lookup, Resolve and Parse APIs. The Lookup, Resolve and Parse APIs return more specific errors such as DNSError, AddrError or ParseError. An OpError may contain nested error information. For example, Dial may return an OpError containing a DNSError, AddrError, unexposed type/value or other package's type/value like the following: OpError{/* dial info */, Err: &DNSError{}} OpError{/* dial info */, Err: &AddrError{}} OpError{/* dial info */, Err: <unexposed type or value>} OpError{/* dial info */, Err: <other package's type or value>} and Read and Write may return an OpError containing other OpError when an application uses io.Copy or similar: OpError{/* for io.Reader */, Err: &OpError{/* for io.Writer */}} When an endpoint is created for connection-oriented byte-stream protocols, Read may return an io.EOF when the connection is closed by remote endpoint. Fixes #4856. A series of changes: - net: fix inconsistent error values on Dial, Listen partially https://go.googlesource.com/go/+/89b7c66d0d14462fd7893be4290bdfe5f9063ae1 - net: fix inconsistent error values on Read https://go.googlesource.com/go/+/ec1144423f45e010c72363fe59291d43214b6e31 - net: fix inconsistent error values on Write https://go.googlesource.com/go/+/11b5f98bf0d5eb8854f735cc332c912725070214 - net: fix inconsistent error values on Close https://go.googlesource.com/go/+/310db63c5bc121e7bfccb494c01a6b91a257e7fc - net: fix inconsistent error values on Accept https://go.googlesource.com/go/+/4540e162b1aefda8157372764ad3d290a414ef1d - net: fix inconsistent error values on File https://go.googlesource.com/go/+/885111365ba0a74421059bfbd18f4c57c1e70332 - net: fix inconsistent error values on setters https://go.googlesource.com/go/+/2173a27903897c481b0a0daf3ca3e0a0685701db - net: fix inconsistent error values on Interface https://go.googlesource.com/go/+/456cf0f22c93e1a6654980f4a48a564555f6c8a2 - net: fix inconsistent error values on Lookup https://go.googlesource.com/go/+/0fc582e87942b2e52bed751b6c56660ba99e9a7d - net: add Source field to OpError https://go.googlesource.com/go/+/afd2d2b6df3ebfe99faf347030f15adfdf422fa0 Change-Id: Id678e369088dc9fbe9073cfe7ff8a8754a57d61f Reviewed-on: https://go-review.googlesource.com/9236 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: remove dead code in WriteMikio Hara2015-04-291-1/+0
| | | | | | | | | | Also, please be informed that the Write method on both connected and unconnected-mode sockets may return a positive number of bytes written with timeout or use of closed network connection error. Change-Id: I2e2e6192e29cef4e9389eb0422c605c6d12e6a3c Reviewed-on: https://go-review.googlesource.com/9466 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* net: fix inconsistent error values on FileMikio Hara2015-04-211-2/+2
| | | | | | | | | | | This change fixes inconsistent error values on File{Conn,Listener,PacketConn} and File method of Conn, Listener. Updates #4856. Change-Id: I3197b9277bef0e034427e3a44fa77523acaa2520 Reviewed-on: https://go-review.googlesource.com/9101 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: fix inconsistent error values on AcceptMikio Hara2015-04-181-2/+2
| | | | | | | | | | This change fixes inconsistent error values on Accept{,TCP,Unix}. Updates #4856. Change-Id: Ie3bb534c19a724cacb3ea3f3656e46c810b2123f Reviewed-on: https://go-review.googlesource.com/8996 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: fix inconsistent error values on CloseMikio Hara2015-04-181-5/+1
| | | | | | | | | | | This change fixes inconsistent error values on Close, CloseRead and CloseWrite. Updates #4856. Change-Id: I3c4d46ccd7d6e1a2f52d8e75b512f62c533a368d Reviewed-on: https://go-review.googlesource.com/8994 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: fix inconsistent error values on WriteMikio Hara2015-04-181-10/+3
| | | | | | | | | | | This change fixes inconsistent error values on Write, WriteTo{,UDP,IP,Unix} and WriteMsg{UDP,IP,Unix}. Updates #4856. Change-Id: I4208ab6a0650455ad7d70a80a2d6169351d6055f Reviewed-on: https://go-review.googlesource.com/8993 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: fix inconsistent error values on ReadMikio Hara2015-04-181-12/+3
| | | | | | | | | | | This change fixes inconsistent error values on Read, ReadFrom{,UDP,IP,Unix} and ReadMsg{UDP,IP,Unix}. Updates #4856. Change-Id: I7de5663094e09be2d78cdb18ce6f1e7ec260888d Reviewed-on: https://go-review.googlesource.com/8992 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: add socket system call hooks for testingMikio Hara2015-03-311-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds socket system call hooks to existing test cases for simulating a bit complicated network conditions to help making timeout and dual IP stack test cases work more properly in followup changes. Also test cases print debugging information in non-short mode like the following: Leaked goroutines: net.TestWriteTimeout.func2(0xc20802a5a0, 0xc20801d000, 0x1000, 0x1000, 0xc2081d2ae0) /go/src/net/timeout_test.go:170 +0x98 created by net.TestWriteTimeout /go/src/net/timeout_test.go:173 +0x745 net.runDatagramPacketConnServer(0xc2080730e0, 0x2bd270, 0x3, 0x2c1770, 0xb, 0xc2081d2ba0, 0xc2081d2c00) /go/src/net/server_test.go:398 +0x667 created by net.TestTimeoutUDP /go/src/net/timeout_test.go:247 +0xc9 (snip) Leaked sockets: 3: {Cookie:615726511685632 Err:<nil> SocketErr:0} 5: {Cookie:7934075906097152 Err:<nil> SocketErr:0} Socket statistical information: {Family:1 Type:805306370 Protocol:0 Opened:17 Accepted:0 Connected:5 Closed:17} {Family:2 Type:805306369 Protocol:0 Opened:450 Accepted:234 Connected:279 Closed:636} {Family:1 Type:805306369 Protocol:0 Opened:11 Accepted:5 Connected:5 Closed:16} {Family:28 Type:805306369 Protocol:0 Opened:95 Accepted:22 Connected:16 Closed:116} {Family:2 Type:805306370 Protocol:0 Opened:84 Accepted:0 Connected:34 Closed:83} {Family:28 Type:805306370 Protocol:0 Opened:52 Accepted:0 Connected:4 Closed:52} Change-Id: I0e84be59a0699bc31245c78e2249423459b8cdda Reviewed-on: https://go-review.googlesource.com/6390 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: remove the dregs of old built-in poll serverMikio Hara2015-02-041-7/+1
| | | | | | | | We don't need placeholders for the old built-in poll server any more. Change-Id: I3a510aec6a30bc2ac97676c400177cdfe557b8dc Reviewed-on: https://go-review.googlesource.com/3863 Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
* net: remove full stack test cases for IPConnMikio Hara2015-01-291-7/+0
| | | | | | | | | | | | | | A few packages that handle net.IPConn in golang.org/x/net sub repository already implement full stack test cases with more coverage than the net package. There is no need to keep duplicate code around here. This change removes full stack test cases for IPConn that require knowing how to speak with each of protocol stack implementation of supported platforms. Change-Id: I871119a9746fc6a2b997b69cfd733463558f5816 Reviewed-on: https://go-review.googlesource.com/3404 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: don't return io.EOF on reading data from datagram, raw sockets on windowsMikio Hara2015-01-011-10/+3
| | | | | | | | | | | | Preventing returning io.EOF on non-connection oriented sockets is already applied to Unix variants. This CL applies it to Windows. Update #4856. Change-Id: I82071d40f617e2962d0540b9d1d6a10ea4cdb2ec Reviewed-on: https://go-review.googlesource.com/2203 Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Alex Brainman <alex.brainman@gmail.com>