1. 18 May, 2016 16 commits
    • Brad Fitzpatrick's avatar
      net/http: fix spurious logging in Transport when server closes idle conn · 4d2ac544
      Brad Fitzpatrick authored
      In https://golang.org/3210, Transport errors occurring before
      receiving response headers were wrapped in another error type to
      indicate to the retry logic elsewhere that the request might be
      re-tryable. But a check for err == io.EOF was missed, which then became
      false once io.EOF was wrapped in the beforeRespHeaderError type.
      
      The beforeRespHeaderError was too fragile. Remove it. I tried to fix
      it in an earlier version of this CL and just broke different things
      instead.
      
      Also remove the "markBroken" method. It's redundant and confusing.
      
      Also, rename the checkTransportResend method to shouldRetryRequest and
      make it return a bool instead of an error. This also helps readability.
      
      Now the code recognizes the two main reasons we'd want to retry a
      request: because we never wrote the request in the first place (so:
      count the number of bytes we've written), or because the server hung
      up on us before we received response headers for an idempotent request.
      
      As an added bonus, this could make POST requests safely re-tryable
      since we know we haven't written anything yet. But it's too late in Go
      1.7 to enable that, so we'll do that later (filed #15723).
      
      This also adds a new internal (package http) test, since testing this
      blackbox at higher levels in transport_test wasn't possible.
      
      Fixes #15446
      
      Change-Id: I2c1dc03b1f1ebdf3f04eba81792bd5c4fb6b6b66
      Reviewed-on: https://go-review.googlesource.com/23160Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      4d2ac544
    • Ilya Tocar's avatar
      hash/crc64: Use slicing by 8. · 9d73e146
      Ilya Tocar authored
      Similar to crc32 slicing by 8.
      This also fixes a Crc64KB benchmark actually using 1024 bytes.
      
      Crc64/ISO64KB-4       147µs ± 0%      37µs ± 0%   -75.05%  (p=0.000 n=18+18)
      Crc64/ISO4KB-4       9.19µs ± 0%    2.33µs ± 0%   -74.70%  (p=0.000 n=19+20)
      Crc64/ISO1KB-4       2.31µs ± 0%    0.60µs ± 0%   -73.81%  (p=0.000 n=19+15)
      Crc64/ECMA64KB-4      147µs ± 0%      37µs ± 0%   -75.05%  (p=0.000 n=20+20)
      Crc64/Random64KB-4    147µs ± 0%      41µs ± 0%   -72.17%  (p=0.000 n=20+18)
      Crc64/Random16KB-4   36.7µs ± 0%    36.5µs ± 0%    -0.54%  (p=0.000 n=18+19)
      
      name                old speed     new speed      delta
      Crc64/ISO64KB-4     446MB/s ± 0%  1788MB/s ± 0%  +300.72%  (p=0.000 n=18+18)
      Crc64/ISO4KB-4      446MB/s ± 0%  1761MB/s ± 0%  +295.20%  (p=0.000 n=18+20)
      Crc64/ISO1KB-4      444MB/s ± 0%  1694MB/s ± 0%  +281.46%  (p=0.000 n=19+20)
      Crc64/ECMA64KB-4    446MB/s ± 0%  1788MB/s ± 0%  +300.77%  (p=0.000 n=20+20)
      Crc64/Random64KB-4  446MB/s ± 0%  1603MB/s ± 0%  +259.32%  (p=0.000 n=20+18)
      Crc64/Random16KB-4  446MB/s ± 0%   448MB/s ± 0%    +0.54%  (p=0.000 n=18+20)
      
      Change-Id: I1c7621d836c486d6bfc41dbe1ec2ff9ab11aedfc
      Reviewed-on: https://go-review.googlesource.com/22222
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      9d73e146
    • Lee Hinman's avatar
      crypto/x509: add Admin & User Keychains to FetchPEMRoots on Darwin · 6cd698d7
      Lee Hinman authored
      in root_cgo_darwin.go only certificates from the System Domain
      were being used in FetchPEMRoots.  This patch adds support for
      getting certificates from all three domains (System, Admin,
      User).  Also it will only read trusted certificates from those
      Keychains.  Because it is possible to trust a non Root certificate,
      this patch also adds a checks to see if the Subject and Issuer
      name are the same.
      
      Fixes #14514
      
      Change-Id: Ia03936d7a61d1e24e99f31c92f9927ae48b2b494
      Reviewed-on: https://go-review.googlesource.com/20351Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      6cd698d7
    • Adam Langley's avatar
      crypto/ecdsa: reject negative inputs. · b30fcbc9
      Adam Langley authored
      The fact that crypto/ecdsa.Verify didn't reject negative inputs was a
      mistake on my part: I had unsigned numbers on the brain. However, it
      doesn't generally cause problems. (ModInverse results in zero, which
      results in x being zero, which is rejected.)
      
      The amd64 P-256 code will crash when given a large, negative input.
      
      This fixes both crypto/ecdsa to reject these values and also the P-256
      code to ignore the sign of inputs.
      
      Change-Id: I6370ed7ca8125e53225866f55b616a4022b818f8
      Reviewed-on: https://go-review.googlesource.com/22093
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      b30fcbc9
    • Monty Taylor's avatar
      vcs: Add support for git.openstack.org · 2ba8fc5b
      Monty Taylor authored
      Go is being proposed as an officially supported language for elements of
      OpenStack:
      
        https://review.openstack.org/#/c/312267/
      
      As such, repos that exist in OpenStack's git infrastructure
      are likely to become places from which people might want to go get
      things. Allow optional .git suffixes to allow writing code that depends
      on git.openstack.org repos that will work with older go versions while
      we wait for this support to roll out.
      
      Change-Id: Ia64bdb1dafea33b1c3770803230d30ec1059df22
      Reviewed-on: https://go-review.googlesource.com/23135Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      2ba8fc5b
    • David Chase's avatar
      cmd/compile: reduce element size of arrays in sparse{map,set} · d35a4158
      David Chase authored
      sparseSet and sparseMap only need 32 bit integers in their
      arrays, since a sparseEntry key is also limited to 32 bits.
      This appears to reduce the space allocated for at least
      one pathological compilation by 1%, perhaps more.
      
      Not necessarily for 1.7, but it saves a little and is very
      low-risk.
      
      Change-Id: Icf1185859e9f5fe1261a206b441e02c34f7d02fd
      Reviewed-on: https://go-review.googlesource.com/22972
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      d35a4158
    • Cuihtlauac ALVARADO's avatar
      runtime: in tests, make sure gdb does not start with a shell · 2380a039
      Cuihtlauac ALVARADO authored
      On some systems, gdb is set to: "startup-with-shell on". This
      breaks runtime_test. This just make sure gdb does not start by
      spawning a shell.
      
      Fixes #15354
      
      Change-Id: Ia040931c61dea22f4fdd79665ab9f84835ecaa70
      Reviewed-on: https://go-review.googlesource.com/23142Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      2380a039
    • Matthew Dempsky's avatar
      cmd/compile: handle unsafe.Pointer(f()) correctly · c65647d6
      Matthew Dempsky authored
      Previously statements like
      
          f(unsafe.Pointer(g()), int(h()))
      
      would be reordered into a sequence of statements like
      
          autotmp_g := g()
          autotmp_h := h()
          f(unsafe.Pointer(autotmp_g), int(autotmp_h))
      
      which can leave g's temporary value on the stack as a uintptr, rather
      than an unsafe.Pointer. Instead, recognize uintptr-to-unsafe.Pointer
      conversions when reordering function calls to instead produce:
      
          autotmp_g := unsafe.Pointer(g())
          autotmp_h := h()
          f(autotmp_g, int(autotmp_h))
      
      Fixes #15329.
      
      Change-Id: I2cdbd89d233d0d5c94791513a9fd5fd958d11ed5
      Reviewed-on: https://go-review.googlesource.com/22273
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      c65647d6
    • Ian Lance Taylor's avatar
      doc/effective_go: clarify backward function reference · c6a5b360
      Ian Lance Taylor authored
      Fixes #14656.
      
      Change-Id: I37a9aa51705ae18bd034f2cc6dbf06a55f969197
      Reviewed-on: https://go-review.googlesource.com/23202Reviewed-by: default avatarRob Pike <r@golang.org>
      c6a5b360
    • Mikio Hara's avatar
      net: don't increase test table rows when using -test.count flag · d4ed8da9
      Mikio Hara authored
      Change-Id: I7881e3353dc5cd9755a79ea0eab146c6a0a08306
      Reviewed-on: https://go-review.googlesource.com/23195
      Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      d4ed8da9
    • Mikio Hara's avatar
      net: deflake TestLookupPort on Android · 6de34e6e
      Mikio Hara authored
      Looks like some version of Android still fails with "servname not
      supported for ai_socktype". It probably doesn't support
      ai_socktype=SOCK_STREAM.
      
      Updates #14576.
      
      Change-Id: I77ecff147d5b759e3281b3798c60f150a4aab811
      Reviewed-on: https://go-review.googlesource.com/23194Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      6de34e6e
    • Brad Fitzpatrick's avatar
      regexp/syntax: clarify that \Z means Perl's \Z · cdcb8271
      Brad Fitzpatrick authored
      Fixes #14793
      
      Change-Id: I408056d096cd6a999fa5e349704b5ea8e26d2e4e
      Reviewed-on: https://go-review.googlesource.com/23201Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      cdcb8271
    • Ian Lance Taylor's avatar
      runtime: deflake TestSignalExitStatus · 23a59ba1
      Ian Lance Taylor authored
      The signal might get delivered to a different thread, and that thread
      might not run again before the currently running thread returns and
      exits. Sleep to give the other thread time to pick up the signal and
      crash.
      
      Not tested for all cases, but, optimistically:
      Fixes #14063.
      
      Change-Id: Iff58669ac6185ad91cce85e0e86f17497a3659fd
      Reviewed-on: https://go-review.googlesource.com/23203
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMikio Hara <mikioh.mikioh@gmail.com>
      23a59ba1
    • Emmanuel Odeke's avatar
      crypto/x509: fix typo in docs for CreateCertificateRequest · ac66bb34
      Emmanuel Odeke authored
      Update the doc for CreateCertificateRequest
      to state that it creates a
        `new certificate request`
      instead of just a
        `new certificate`
      
      Fixes #14649.
      
      Change-Id: Ibbbcf91d74168998990990e78e5272a6cf294d51
      Reviewed-on: https://go-review.googlesource.com/23204Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      ac66bb34
    • Brad Fitzpatrick's avatar
      net/http: add test confirming a connection reuse case · f962e6e0
      Brad Fitzpatrick authored
      Verify that for a server doing chunked encoding, with the final data
      and EOF arriving together, the client will reuse the connection even
      if it closes the body without seeing an EOF. The server sends at least
      one non-zero chunk and one zero chunk. This verifies that the client's
      bufio reading reads ahead and notes the EOF, so even if the JSON
      decoder doesn't read the EOF itself, as long as somebody sees it, a
      close won't forcible tear down the connection. This was true at least
      of https://golang.org/cl/21291
      
      No code change. Test already passed (even with lots of runs, including
      in race mode with randomized goroutine scheduling).
      
      Updates #15703
      
      Change-Id: I2140b3eec6b099b6b6e54f153fe271becac5d949
      Reviewed-on: https://go-review.googlesource.com/23200
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      f962e6e0
    • James Chacon's avatar
      runtime: prevent racefini from being invoked more than once · 733162fd
      James Chacon authored
      racefini calls __tsan_fini which is C code and at the end of it
      invoked the standard C library exit(3) call. This has undefined
      behavior if invoked more than once. Specifically in C++ programs
      it caused static destructors to run twice. At least on glibc
      impls it also means the at_exit handlers list (where those are
      stored) also free's a list entry when it completes these. So invoking
      twice results in a double free at exit which trips debug memory
      allocation tracking.
      
      Fix all of this by using an atomic as a boolean barrier around
      calls to racefini being invoked > 1 time.
      
      Fixes #15578
      
      Change-Id: I49222aa9b8ded77160931f46434c61a8379570fc
      Reviewed-on: https://go-review.googlesource.com/22882Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      733162fd
  2. 17 May, 2016 6 commits
  3. 16 May, 2016 13 commits
  4. 15 May, 2016 5 commits