aboutsummaryrefslogtreecommitdiff
path: root/src/net/ipsock_plan9.go
AgeCommit message (Collapse)Author
5 daysnet: drop always nil (*netFD).netFD error return valueTobias Klauser
Drop the always-nil error to simplify callers. This was missed in CL 764620. Change-Id: I7a93640b5422d7441234e226aa8b541888b2ebea Reviewed-on: https://go-review.googlesource.com/c/go/+/765220 Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Nicholas Husin <husin@google.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Nicholas Husin <nsh@golang.org>
6 daysnet: remove always-nil newFD error return valueTobias Klauser
newFD never returns an error on any of the platforms that define it. Drop the always-nil error to simplify callers. Change-Id: I727e95a0dac51ef70497ea1295276a8a6dce7f08 Reviewed-on: https://go-review.googlesource.com/c/go/+/764620 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Damien Neil <dneil@google.com> Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: David Chase <drchase@google.com>
2025-10-29internal/itoa, internal/runtime/strconv: deleteRuss Cox
Replaced by internal/strconv. Change-Id: I0656a9ad5075e60339e963fbae7d194d2f3e16be Reviewed-on: https://go-review.googlesource.com/c/go/+/716001 Reviewed-by: David Chase <drchase@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-02-25net: properly wrap context cancellation errors and return DNSErrors consistentlyMateusz Poliwczak
Fixes #71939 Change-Id: Id7cd720fcca2812ffca2b1b20fe923914422d994 GitHub-Last-Rev: 4671f338c91b5826c669fbd113c176e22f5020e5 GitHub-Pull-Request: golang/go#71941 Reviewed-on: https://go-review.googlesource.com/c/go/+/652275 Commit-Queue: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Damien Neil <dneil@google.com>
2023-08-29net: avoid internal hooks in TestDialTimeoutBryan C. Mills
TestDialTimeout has historically been very flaky (#11872, #13144, #22896, and now #56876), apparently in part due to implementation details of the socktest package it relies on. In reviewing CL 467335, I noticed that TestDialTimeout is the last remaining use of testHookDialChannel (added for #5349), and that that hook no longer has any effect for Unix and Windows. As an experiment, I tried removing both that hook and the call to time.Sleep in the socktest filter, and to my surprise the test continued to pass. That greatly undermined my confidence in the test, since it appears that the “timeout” behavior it observes is caused by the socktest filter injecting an error rather than anything in the net package proper actually timing out. To restore confidence in the test, I think it should be written against only the public API of the net package, and should test the publicly-documented behaviors. This change implements that approach. Notably, when a timeout is set on a Dial call, that does not guarantee that the listener will actually call Accept on the connection before the timeout occurs: the kernel's network stack may preemptively accept and buffer the connection on behalf of the listener. To avoid test flakiness, the test must tolerate (and leave open) those spurious connections: when the kernel has accepted enough of them, it will start to block new connections until the buffered connections have been accepted, and the expected timeout behavior will occur. This also allows the test to run much more quickly and in parallel: since we are relying on real timeouts instead of injected calls to time.Sleep, we can set the timeouts to be much shorter and run concurrently with other public-API tests without introducing races. Fixes #56876. Change-Id: I90dcb2ed70976e70857ca29c253ed760cb078a4c Reviewed-on: https://go-review.googlesource.com/c/go/+/524055 TryBot-Bypass: Bryan Mills <bcmills@google.com> Reviewed-by: Damien Neil <dneil@google.com> Auto-Submit: Bryan Mills <bcmills@google.com> Run-TryBot: Bryan Mills <bcmills@google.com>
2021-04-12net: fix (*ipStackCapabilities).probe godocTobias Klauser
Change-Id: I2e5db6e7e9a7b3c84449d16b6bc32afe1d0ffee9 Reviewed-on: https://go-review.googlesource.com/c/go/+/308991 Trust: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2021-03-14all: add internal/itoa packageJosh Bleecher Snyder
This replaces five implementations scattered across low level packages. (And I plan to use it in a sixth soon.) Three of the five were byte-for-byte identical. Change-Id: I3bbbeeac63723a487986c912b604e10ad1e042f4 Reviewed-on: https://go-review.googlesource.com/c/go/+/301549 Trust: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
2020-10-20all: update references to symbols moved from os to io/fsRuss Cox
The old os references are still valid, but update our code to reflect best practices and get used to the new locations. Code compiled with the bootstrap toolchain (cmd/asm, cmd/dist, cmd/compile, debug/elf) must remain Go 1.4-compatible and is excluded. For #41190. Change-Id: I8f9526977867c10a221e2f392f78d7dec073f1bd Reviewed-on: https://go-review.googlesource.com/c/go/+/243907 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2020-07-10net: hangup TCP connection after Dial timeout in Plan 9Fazlul Shahriar
After Dial timeout, force close the TCP connection by writing "hangup" to the control file. This unblocks the "connect" command if the connection is taking too long to establish, and frees up the control file FD. Fixes #40118 Change-Id: I1cef8539cd9fe0793e32b49c9d0ef636b4b26e1d Reviewed-on: https://go-review.googlesource.com/c/go/+/241638 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David du Colombier <0intro@gmail.com>
2020-07-07net: correct address when listening on IPv4zero tcp4/udp4 on Plan 9Fazlul Shahriar
Since Plan 9 doesn't allow us to listen on 0.0.0.0, the Listener address that's read in from /net is the IPv6 address ::. Convert this address to 0.0.0.0 when the network is tcp4 or udp4. Fixes #40045 Change-Id: Icfb69b823e5b80603742d23c3762a812996fe43f Reviewed-on: https://go-review.googlesource.com/c/go/+/240918 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David du Colombier <0intro@gmail.com>
2020-06-30net: fix TestDialerLocalAddr on Plan 9Fazlul Shahriar
We cannot use "0.0.0.0" (IPv4) or "::" (IPv6) for local address, so don't use those addresses in the control message. Alternatively, we could've used "*" instead. Fixes #39931 Change-Id: Ib2dcbb1a0c648296c3ecaddbe938053a569b1f1b Reviewed-on: https://go-review.googlesource.com/c/go/+/240464 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David du Colombier <0intro@gmail.com>
2020-06-29net: add support for dialing from a custom local address on Plan 9Fazlul Shahriar
Make use of the extra parameter on "connect" control message to set the local IP address and port. The ip(3) man page doesn't document that the local IP address is settable, but upon inspection of the source code, it's clearly settable. Fixes #39747 Change-Id: Ied3d60452f20d6e5af23d1c1dcb34774af0dbd5b Reviewed-on: https://go-review.googlesource.com/c/go/+/240064 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David du Colombier <0intro@gmail.com>
2020-02-28net: report port number correctly in Plan 9 errorIan Lance Taylor
The code was incorrectly using a string conversion of a numeric port to display the port number. No test because as far as I can tell this code is only executed if there is some error in a /net file. Updates #32479 Change-Id: I0b8deebbf3c0b7cb1e1eee0fd059505f3f4c1623 Reviewed-on: https://go-review.googlesource.com/c/go/+/221377 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-10-16net: fix multicast and IPv6 related issues on Plan 9Fazlul Shahriar
Fix issues that make these tests pass: - TestDialerLocalAddr: return error if local address is not IPv4 for "tcp4" network. - TestInterfaceAddrs, TestInterfaceUnicastAddrs: don't assume each interface has only one address. It may have more than one or none. - TestConcurrentPreferGoResolversDial: should be skipped on Plan 9. - TestListenMulticastUDP: remove IP from `announce` command and don't mix IPv4 address with IPv6 address in `addmulti` command. Fixes #34931 Change-Id: Ie0fdfe19ea282e5d6d6c938bf3c9139f8f5b0308 Reviewed-on: https://go-review.googlesource.com/c/go/+/201397 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-08-21net: use internal/bytealg insetad of linkname tricksIlya Tocar
We are currently using go:linkname for some algorithms from strings/bytes packages, to avoid importing strings/bytes. But strings/bytes are just wrappers around internal/bytealg, so we should use internal/bytealg directly. Change-Id: I2836f779b88bf8876d5fa725043a6042bdda0390 Reviewed-on: https://go-review.googlesource.com/130515 Run-TryBot: Ilya Tocar <ilya.tocar@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-04-26net: defer file.close() + minor style cleanupEmmanuel Odeke
Moved the relevant file.close() usages close to after the file opens and put them in defer statements, so that readers don't have to think too much as to where the file is being closed. Change-Id: Ic4190b02ea2f5ac281b9ba104e0023e9f87ca8c7 Reviewed-on: https://go-review.googlesource.com/41796 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-15net: delay IP protocol stack-snooping system callsMikio Hara
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>
2017-02-13net: refactor poller into new internal/poll packageIan Lance Taylor
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>
2016-11-03net: disallow dialing and listening on port > 65535 on Plan 9David du Colombier
Since Dial(":80") was implemented on Plan 9 (CL 32593), TestProtocolDialError is failing because dialing a port superior to 65535 is supported on Plan 9. This change disallows dialing and listening on ports superior to 65535. Fixes #17761. Change-Id: I95e8a163eeacf1ccd8ece7b650f16a0531c59709 Reviewed-on: https://go-review.googlesource.com/32594 Reviewed-by: Russ Cox <rsc@golang.org>
2016-11-03net: fix Dial(":80") on Plan 9David du Colombier
CL 32101 fixed Dial(":80") on Windows and added TestDialLocal, which was failing on Plan 9, because it wasn't implemented on Plan 9. This change implements Dial(":80") by connecting to 127.0.0.1 or ::1 (depending on network), so it works as documented. Fixes #17760. Change-Id: If0ff769299e09bebce11fc3708639c1d8c96c280 Reviewed-on: https://go-review.googlesource.com/32593 Reviewed-by: Russ Cox <rsc@golang.org>
2016-10-18net: always wake up the readers on close on Plan 9David du Colombier
Previously, in acceptPlan9 we set netFD.ctl to the listener's /net/tcp/*/listen file instead of the accepted connection's /net/tcp/*/ctl file. In netFD.Read, we write "close" to netFD.ctl to close the connection and wake up the readers. However, in the case of an accepted connection, we got the error "write /net/tcp/*/listen: inappropriate use of fd" because the /net/tcp/*/listen doesn't handle the "close" message. In this case, the connection wasn't closed and the readers weren't awake. We modified the netFD structure so that netFD.ctl represents the accepted connection and netFD.listen represents the listener. Change-Id: Ie38c7dbaeaf77fe9ff7da293f09e86d1a01b3e1e Reviewed-on: https://go-review.googlesource.com/31390 Run-TryBot: David du Colombier <0intro@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-08-17net: simplify internal dtoi and xtoi funcsDan Peterson
Callers pass strings sliced as necessary instead of giving an offset. Fixes #16350 Change-Id: I7ba896f6ff09e0fd0094ca6c5af5d9a81622f15e Reviewed-on: https://go-review.googlesource.com/27206 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-04-18net: fix plan9 after context change, propagate contexts moreBrad Fitzpatrick
My previous https://golang.org/cl/22101 to add context throughout the net package broke Plan 9, which isn't currently tested (#15251). It also broke some old unsupported version of Windows (Windows 2000?) which doesn't have the ConnectEx function, but that was only found visually, since our minimum supported Windows version has ConnectEx. This change simplifies the Windows and deletes the non-ConnectEx code path. Windows 2000 will work even less now, if it even worked before. Windows XP remains our minimum supported version. Specifically, the previous CL stopped using the "dial" function, which 0intro noted: https://github.com/golang/go/issues/15333#issuecomment-210842761 This CL removes the dial function instead and makes plan9's net implementation respect contexts, which likely fixes a number of t.Skipped tests. I'm leaving that to 0intro to investigate. In the process of propagating and respecting contexts for plan9, I had to change some signatures to add contexts to more places and ended up pushing contexts down into the Go-based DNS resolution as well, replacing the pure-Go DNS implementation's use of "timeout time.Duration" with a context instead. Updates #11932 Updates #15328 Fixes #15333 Change-Id: I6ad1e62f38271cdd86b3f40921f2d0f23374936a Reviewed-on: https://go-review.googlesource.com/22144 Reviewed-by: David du Colombier <0intro@gmail.com> Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-03-03net: deduplicate TCP socket codeMikio Hara
This change consolidates functions and methods related to TCPAddr, TCPConn and TCPListener for maintenance purpose, especially for documentation. Also refactors Dial error code paths. The followup changes will update comments and examples. Updates #10624. Change-Id: I3333ee218ebcd08928f9e2826cd1984d15ea153e Reviewed-on: https://go-review.googlesource.com/20009 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-03-02all: single space after period.Brad Fitzpatrick
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>
2016-03-01all: make copyright headers consistent with one space after periodBrad Fitzpatrick
This is a subset of https://golang.org/cl/20022 with only the copyright header lines, so the next CL will be smaller and more reviewable. Go policy has been single space after periods in comments for some time. The copyright header template at: https://golang.org/doc/contribute.html#copyright also uses a single space. Make them all consistent. Change-Id: Icc26c6b8495c3820da6b171ca96a74701b4a01b0 Reviewed-on: https://go-review.googlesource.com/20111 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-06-13net: don't return non-nil interface values as Source, Addr in OpErrorMikio Hara
Fixes #10992. Change-Id: Ia376e4de118993b43e5813da57ab25fea8122048 Reviewed-on: https://go-review.googlesource.com/10476 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-05-05net: fix inconsistent errorsMikio Hara
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>
2015-04-29net: add Source field to OpErrorMikio Hara
Not only by network, transport-layer intermediaries but by virtualization stuff in a node, it is hard to identify the root cause of weird faults without information of packet flows after disaster happened. This change adds Source field to OpError to be able to represent a 5-tuple of internet transport protocols for helping dealing with complicated systems. Also clarifies the usage of Source and Addr fields. Updates #4856. Change-Id: I96a523fe391ed14406bfb21604c461d4aac2fa19 Reviewed-on: https://go-review.googlesource.com/9231 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-04-17net: rename netFD.proto to netFD.net on Plan 9Mikio Hara
In followup changes, we'll move OpError around from the netFD layer to the Conn layer for fixing #4856. Before doing that, this change makes netFD of Plan 9 match netFD for POSIX platforms to avoid conflict. Change-Id: Iea7632716d48722a1758e52effefec964a3a9442 Reviewed-on: https://go-review.googlesource.com/8990 Reviewed-by: David du Colombier <0intro@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2014-09-08build: move package sources from src/pkg to srcRuss Cox
Preparation was in CL 134570043. This CL contains only the effect of 'hg mv src/pkg/* src'. For more about the move, see golang.org/s/go14nopkg.