- 27 Oct, 2016 29 commits
-
-
Michael Hudson-Doyle authored
Otherwise, the way the ELF dynamic linker works means that you can end up with the same itab being passed to additab twice, leading to the itab linked list having a cycle in it. Add a test to additab in runtime to catch this when it happens, not some arbitrary and surprsing time later. Fixes #17594 Change-Id: I6c82edcc9ac88ac188d1185370242dc92f46b1ad Reviewed-on: https://go-review.googlesource.com/32131 Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com> Reviewed-by: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Adam Langley authored
This change updates the vendored version of the poly1305 package to match the latest version from x/crypto. This pulls in this change: commit 1150b8bd09e53aea1d415621adae9bad665061a1 Author: Adam Langley <agl@golang.org> Date: Fri Oct 21 15:59:10 2016 -0700 poly1305: don't move R13 in sum_arm.s. Rather than change the value of R13 during the execution, keep R13 fixed (after the initial prelude) and always use offsets from it. This should help the runtime figure out what's going on if, say, a signal should occur while running this code. I've also trimmed the set of saved registers since Go doesn't require the callee to maintain anything except R10 and R13. Change-Id: Ifbeca73c1d964cc43bb7f8c20c61066f22fd562d Reviewed-on: https://go-review.googlesource.com/31717 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Change-Id: I376b3e5d53aaded891e02801bd5faa5ff758da0d Reviewed-on: https://go-review.googlesource.com/32227 Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Russ Cox authored
Fixes #16014. Change-Id: I68b096df7924a3258e940c4d94ec5d06f5bdfcbb Reviewed-on: https://go-review.googlesource.com/32097Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Russ Cox authored
When MSIE sends a full file path (in "intranet mode"), it does not escape backslashes: "C:\dev\go\foo.txt", not "C:\\dev\\go\\foo.txt". No known MIME generators emit unnecessary backslash escapes for simple token characters like numbers and letters. If we see an unnecessary backslash escape, assume it is from MSIE and intended as a literal backslash. This makes Go servers deal better with MSIE without affecting the way they handle conforming MIME generators. Fixes #15664. Change-Id: Ia3b03b978317d968dc11b2f6de1df913c6bcbfcc Reviewed-on: https://go-review.googlesource.com/32175Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Russ Cox authored
CL 12905 disallowed "Bob" <""@example.com> but inadvertently also disallowed "" <bob@example.com>. Move the empty string check to apply only in the addr-spec. Fixes #14866. Change-Id: Ia0b7a1a32810aa78157ae77bd0130b78154c460d Reviewed-on: https://go-review.googlesource.com/32176Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Updates http2 to x/net git rev b626cca for: http2: implement support for server push https://golang.org/cl/29439 http2: reject stream self-dependencies https://golang.org/cl/31858 http2: optimize server frame writes https://golang.org/cl/31495 http2: interface to support pluggable schedulers https://golang.org/cl/25366 (no user-visible behavior change or API surface) http2: add Server.IdleTimeout https://golang.org/cl/31727 http2: make Server return conn protocol errors on bad idle stream frames https://golang.org/cl/31736 http2: fix optimized write scheduling https://golang.org/cl/32217 (fix for CL 31495 above) Change-Id: Ie894c72943d355115c8391573bf6b96dc1bd5894 Reviewed-on: https://go-review.googlesource.com/32215 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Tom Bergan <tombergan@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Russ Cox authored
Assembly copied from the clock_gettime(CLOCK_MONOTONIC) call in runtime.nanotime in these files and then modified to use CLOCK_REALTIME. Also comment system call numbers in a few other files. Fixes #11222. Change-Id: Ie132086de7386f865908183aac2713f90fc73e0d Reviewed-on: https://go-review.googlesource.com/32177Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Robert Griesemer authored
For #16339. Change-Id: I7d912ea634bbfacfc0217f97dccb270fde06f16b Reviewed-on: https://go-review.googlesource.com/30601Reviewed-by: Russ Cox <rsc@golang.org>
-
Russ Cox authored
For #17496. Change-Id: I671a59581c54d17bc272767eeb7b2742b54eca38 Reviewed-on: https://go-review.googlesource.com/32183 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Robert Griesemer authored
This CL completes support for alias declarations in the compiler. Also: - increased export format version - updated various comments For #16339. Fixes #17487. Change-Id: Ic6945fc44c0041771eaf9dcfe973f601d14de069 Reviewed-on: https://go-review.googlesource.com/32090 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Adam Langley authored
Currently, the selection of a client certificate done internally based on the limitations given by the server's request and the certifcates in the Config. This means that it's not possible for an application to control that selection based on details of the request. This change adds a callback, GetClientCertificate, that is called by a Client during the handshake and which allows applications to select the best certificate at that time. (Based on https://golang.org/cl/25570/ by Bernd Fix.) Fixes #16626. Change-Id: Ia4cea03235d2aa3c9fd49c99c227593c8e86ddd9 Reviewed-on: https://go-review.googlesource.com/32115Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Russ Cox authored
The receiver itself is not transmitted and does not need to be marshalable by encoding/gob. Fixes #16803. Change-Id: I42a3603fb7d3b36c97dcc2e51a398cd65ec3227d Reviewed-on: https://go-review.googlesource.com/32094 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Adam Langley authored
The SignatureAndHashAlgorithm from TLS 1.2[1] is being changed to SignatureScheme in TLS 1.3[2]. (The actual values are compatible however.) Since we expect to support TLS 1.3 in the future, we're already using the name and style of SignatureScheme in the recently augmented ClientHelloInfo. As this is public API, it seems that SignatureScheme should have its own type and exported values, which is implemented in this change. [1] https://tools.ietf.org/html/rfc5246#section-7.4.1.4.1 [2] https://tools.ietf.org/html/draft-ietf-tls-tls13-18#section-4.2.3 Change-Id: I0482755d02bb9a04eaf075c012696103eb806645 Reviewed-on: https://go-review.googlesource.com/32119Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Adam Langley authored
Since a root certificate is self-signed, it's a valid child of itself. If a root certificate appeared both in the pool of intermediates and roots the verification code could find a chain which included it twice: first as an intermediate and then as a root. (Existing checks prevented the code from looping any more.) This change stops the exact same certificate from appearing twice in a chain. This simplifies the results in the face of the common configuration error of a TLS server returning a root certificate. (This should also stop two different versions of the “same” root appearing in a chain because the self-signature on one will not validate for the other.) Fixes #16800. Change-Id: I004853baa0eea27b44d47b9b34f96113a92ebac8 Reviewed-on: https://go-review.googlesource.com/32121 Run-TryBot: Adam Langley <agl@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Keith Randall authored
Fixes a bug where assignments that should come after a call were instead being issued before the call. Fixes #17596 Fixes #17618 Change-Id: Ic9ae4c34ae38fc4ccd0604b65345b05896a2c295 Reviewed-on: https://go-review.googlesource.com/32226 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Josh Bleecher Snyder authored
IsHiddenClosure is more descriptive. Change-Id: I06651072925a958b148b64ab0db3a9bfc839af9b Reviewed-on: https://go-review.googlesource.com/32224 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Cherry Zhang authored
The mechanism is initially introduced (and reviewed) in CL 30597 on S390X. Change-Id: I83024d2fc84c8efc23fbda52b3ad83073f42cb93 Reviewed-on: https://go-review.googlesource.com/32179Reviewed-by: David Chase <drchase@google.com>
-
Cherry Zhang authored
The mechanism is initially introduced (and reviewed) in CL 30597 on S390X. Change-Id: I12fbe6e9269b2936690e0ec896cb6b5aa40ad7da Reviewed-on: https://go-review.googlesource.com/32180Reviewed-by: David Chase <drchase@google.com>
-
Cherry Zhang authored
DUFFZERO was disabled due to issue #12108. CL 27592 fixed it and enabled DUFFZERO in general, but this one was forgotten. Change-Id: I0476a3a0524c7b54218f7a747bdba76cd823fbc5 Reviewed-on: https://go-review.googlesource.com/32181 Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
-
Vladimir Stefanovic authored
Change-Id: I8111ceb6960364166aa8a445f4d6d8b0581d371e Reviewed-on: https://go-review.googlesource.com/31513Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Josh Bleecher Snyder authored
sort.Sort's argument always escapes. cse generates many calls to sort.Sort. Set up a single escaping variable and re-use it across loops. name old alloc/op new alloc/op delta Template 40.7MB ± 0% 40.2MB ± 0% -1.24% (p=0.000 n=15+15) Unicode 33.4MB ± 0% 33.3MB ± 0% -0.09% (p=0.000 n=15+15) GoTypes 121MB ± 0% 119MB ± 0% -1.48% (p=0.000 n=14+15) Compiler 474MB ± 0% 465MB ± 0% -1.94% (p=0.000 n=14+15) name old allocs/op new allocs/op delta Template 405k ± 0% 394k ± 0% -2.64% (p=0.000 n=15+15) Unicode 350k ± 0% 350k ± 0% -0.14% (p=0.000 n=14+15) GoTypes 1.21M ± 0% 1.18M ± 0% -3.07% (p=0.000 n=15+14) Compiler 4.37M ± 0% 4.18M ± 0% -4.39% (p=0.000 n=15+15) Change-Id: I68cf56dafa0f3ea778826eea19908bd761556154 Reviewed-on: https://go-review.googlesource.com/32220 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Nigel Tao authored
While https://www.w3.org/TR/PNG/#5ChunkOrdering says that tRNS's ordering constraint is "After PLTE; before IDAT", it is legal for a tRNS chunk to occur without a PLTE chunk at all, for greyscale and truecolor transparency as opposed to palette-based transparency. See https://www.w3.org/TR/PNG/#11transinfo Fixes #17511. Change-Id: I047b0b01d78a1cda65e00eeac229bb972cda431d Reviewed-on: https://go-review.googlesource.com/32139Reviewed-by: Rob Pike <r@golang.org>
-
Andrew Gerrand authored
As agreed upon by the Code of Conduct working group, "race" may refer to an attempt to classify people based on "defining characteristics", regardless of how this people view themselves, while "ethnicity" refers to how people identify themselves. The Code of Conduct working group believes that the term "ethnicity" will be more comprehensive and inclusive, and will better serve the Go community. Change-Id: I724b72cadb8cf29b4bac8f83017b0303feae3c94 Reviewed-on: https://go-review.googlesource.com/32133Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Chris McGee authored
The new implementation adds listening support on a multicast address with plan9 network interfaces. Fixes #17218 Change-Id: I2c75515e72e120acb71610cd077fddfbf9cf4e29 Reviewed-on: https://go-review.googlesource.com/29964Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
With the removal of the old backend, a Label is just a Node. Passes toolstash -cmp. Change-Id: Ia62cb00fbc551efb75a4ed4dc6ed54fca0831dbf Reviewed-on: https://go-review.googlesource.com/32216 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
Performance changes are negligible, but that's expected. This is a part of a general effort to eliminate OKEY nodes. Passes toolstash -cmp. Updates #15350 name old alloc/op new alloc/op delta Template 40.6MB ± 0% 40.6MB ± 0% -0.04% (p=0.000 n=9+10) Unicode 33.4MB ± 0% 33.4MB ± 0% ~ (p=0.853 n=10+10) GoTypes 120MB ± 0% 120MB ± 0% -0.03% (p=0.000 n=9+10) Compiler 470MB ± 0% 469MB ± 0% -0.06% (p=0.000 n=10+10) name old allocs/op new allocs/op delta Template 404k ± 0% 404k ± 0% ~ (p=0.165 n=10+10) Unicode 350k ± 0% 350k ± 0% ~ (p=0.211 n=9+10) GoTypes 1.21M ± 0% 1.21M ± 0% ~ (p=0.315 n=10+10) Compiler 4.35M ± 0% 4.35M ± 0% -0.03% (p=0.001 n=10+10) Change-Id: I17d547bf9568b1ee2514a7ffab930424617f995e Reviewed-on: https://go-review.googlesource.com/32213 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Klaus Post authored
Tests for determinism was not working as intended since io.Copybuffer uses the io.WriterTo if available. This exposed that level 0 (no compression) changed output based on the number of writes and buffers given to the writer. Previously, Write would emit a new raw block (BTYPE=00) for every non-empty call to Write. This CL fixes it such that a raw block is only emitted upon the following conditions: * A full window is obtained (every 65535 bytes) * Flush is called * Close is called Change-Id: I807f866d97e2db7820f11febab30a96266a6cbf1 Reviewed-on: https://go-review.googlesource.com/31174 Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
-
Klaus Post authored
This change makes deflate level 1 (best speed) match across block boundaries. This comes at a small speed penalty, but improves compression on almost all output. Sample numbers on various content types: enwik9: 391052014 -> 382578469 bytes, 77.59 -> 74.28 MB/s adresser.001: 57269799 -> 47756095 bytes, 287.84 -> 357.86 MB/s 10gb: 5233055166 -> 5198328382 bytes, 105.85 -> 96.99 MB/s rawstudio-mint14: 3972329211 -> 3927423364 bytes, 100.07 -> 94.22 MB/s sites: 165556800 -> 163178702 bytes, 72.31 -> 70.15 MB/s objectfiles: 115962472 -> 111649524 bytes, 132.60 -> 128.05 MB/s sharnd.out: 200015283 -> 200015283 bytes, 221.50 -> 218.83 MB/s Change-Id: I62a139e5c06976e803439a4268acede5139b8cfc Reviewed-on: https://go-review.googlesource.com/31640Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> Reviewed-by: Nigel Tao <nigeltao@golang.org>
-
Hiroshi Ioka authored
EscScope behaves like EscHeap in current code. There are no need to handle it specially. So remove it and use EscHeap instead. Change-Id: I910106fd147f00e5f4fd52c7dde05128141a5160 Reviewed-on: https://go-review.googlesource.com/32130 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
- 26 Oct, 2016 11 commits
-
-
Bill O'Farrell authored
The following benchmarks are improved by the amounts shown (Others unaffected beyond the level of noise.) Also adds a test to confirm non-SIMD implementation still correct, even when run on SIMD-capable machine Benchmark old new BenchmarkAddVV/100-18 66148.08 MB/s 117546.19 MB/s 1.8x BenchmarkAddVV/1000-18 70168.27 MB/s 133478.96 MB/s 1.9x BenchmarkAddVV/10000-18 67489.80 MB/s 100010.79 MB/s 1.5x BenchmarkAddVV/100000-18 54329.99 MB/s 69232.45 MB/s 1.3x BenchmarkAddVW/100-18 9929.10 MB/s 14841.31 MB/s 1.5x BenchmarkAddVW/1000-18 10583.31 MB/s 18674.44 MB/s 1.76x BenchmarkAddVW/10000-18 10521.15 MB/s 17484.10 MB/s 1.66x BenchmarkAddVW/100000-18 10616.56 MB/s 18084.27 MB/s 1.7x Change-Id: Ic9234c41a43f6c5e9d0e9377de8b4deeefc428a7 Reviewed-on: https://go-review.googlesource.com/32211Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ben Burkert authored
The CloseWrite method sends a close_notify alert record to the other side of the connection. This record indicates that the sender has finished sending on the connection. Unlike the Close method, the sender may still read from the connection until it recieves a close_notify record (or the underlying connection is closed). This is analogous to a TCP half-close. This is a rework of CL 25159 with fixes for the unstable test. Updates #8579 Change-Id: I47608d2f82a88baff07a90fd64c280ed16a60d5e Reviewed-on: https://go-review.googlesource.com/31318Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Joe Tsai authored
Re-writing the switch statement as a single boolean expression reduces the number of branches that the compiler generates. It is also arguably easier to read as a pair of numeric ranges that valid runes can exist in. No test changes since the existing test does a good job of testing all of the boundaries. This change was to gain back some performance after a correctness fix done in http://golang.org/cl/32123. The correctness fix (CL/32123) slowed down the benchmarks slightly: benchmark old ns/op new ns/op delta BenchmarkIndexRune/10-4 19.3 21.6 +11.92% BenchmarkIndexRune/32-4 33.6 35.2 +4.76% Since the fix relies on utf8.ValidRune, this CL improves benchmarks: benchmark old ns/op new ns/op delta BenchmarkIndexRune/10-4 21.6 20.0 -7.41% BenchmarkIndexRune/32-4 35.2 33.5 -4.83% Change-Id: Ib1ca10a2e29c90e879a8ef9b7221c33e85d015d8 Reviewed-on: https://go-review.googlesource.com/32122 Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Robert Griesemer authored
Fixes #17621. Change-Id: Id3e75c9b7fba2cf8e791c8817f890556ca238e9d Reviewed-on: https://go-review.googlesource.com/32096Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Joe Tsai authored
In all previous versions of Go, the behavior of IndexRune(s, r) where r was utf.RuneError was that it would effectively return the index of any invalid UTF-8 byte sequence (include RuneError). Optimizations made in http://golang.org/cl/28537 and http://golang.org/cl/28546 altered this undocumented behavior such that RuneError would only match on the RuneError rune itself. Although, the new behavior is arguably reasonable, it did break code that depended on the previous behavior. Thus, we add special checks to ensure that we preserve the old behavior. There is a slight performance hit for correctness: benchmark old ns/op new ns/op delta BenchmarkIndexRune/10-4 19.3 21.6 +11.92% BenchmarkIndexRune/32-4 33.6 35.2 +4.76% This only occurs on small strings. The performance hit for larger strings is neglible and not shown. Fixes #17611 Change-Id: I1d863a741213d46c40b2e1724c41245df52502a5 Reviewed-on: https://go-review.googlesource.com/32123 Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Adam Langley authored
By using these utility functions, the code can be made a little shorter. Thanks to Omar Shafie for pointing this out in https://golang.org/cl/27393/. Change-Id: I33fd97cf7d60a31d0844ec16c12bba530dcc6f6d Reviewed-on: https://go-review.googlesource.com/32120 Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
From lost-in-flight comments on CL 32190. Change-Id: I2029cbac6d24b5944a796b359080011ec3a8da92 Reviewed-on: https://go-review.googlesource.com/32210Reviewed-by: Caleb Spare <cespare@gmail.com> Reviewed-by: Martin Möhrmann <martisch@uos.de>
-
Brad Fitzpatrick authored
Fixes #16717 Change-Id: I7b6518609796a537437539c35461a18e9e6f207f Reviewed-on: https://go-review.googlesource.com/32190Reviewed-by: Martin Möhrmann <martisch@uos.de>
-
Jaana Burcu Dogan authored
Fixes #17534. Change-Id: I28af74b287a5a09d5f6607a012f3d5d133b04ed2 Reviewed-on: https://go-review.googlesource.com/32017Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Carl Johnson authored
- Removes a subject-verb disagreement. - Documents that PATCH requests also populate PostForm. - Explains that r.PostForm is always set (but blank for GET etc.). Fixes #16609 Change-Id: I6b4693f8eb6db7c66fd9b9cd1df8927f50d46d50 Reviewed-on: https://go-review.googlesource.com/32091Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Joe Tsai authored
Change-Id: I40896fffbffefa359d08abda346933aa996f628d Reviewed-on: https://go-review.googlesource.com/32124Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-