1. 24 Feb, 2015 7 commits
    • Adam Langley's avatar
      crypto/tls: allow larger initial records. · 8f8d066b
      Adam Langley authored
      Some servers which misunderstood the point of the CertificateRequest
      message send huge reply records. These records are large enough that
      they were considered “insane” by the TLS code and rejected.
      
      This change removes the sanity test for record lengths. Although the
      maxCiphertext test still remains, just above, which (roughly) enforces
      the 16KB protocol limit on record sizes:
      https://tools.ietf.org/html/rfc5246#section-6.2.1
      
      Fixes #8928.
      
      Change-Id: Idf89a2561b1947325b7ddc2613dc2da638d7d1c9
      Reviewed-on: https://go-review.googlesource.com/5690Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      8f8d066b
    • Adam Langley's avatar
      crypto/x509: don't reject certs with critical policy extensions. · c2317db2
      Adam Langley authored
      There was a missing continue that caused certificates with critical
      certificate-policy extensions to be rejected. Additionally, that code
      structure in general was prone to exactly that bug so I changed it
      around to hopefully be more robust in the future.
      
      Fixes #9964.
      
      Change-Id: I58fc6ef3a84c1bd292a35b8b700f44ef312ec1c1
      Reviewed-on: https://go-review.googlesource.com/5670Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
      c2317db2
    • Robert Griesemer's avatar
      math/big: fix several issues with string->Float conversion · d9859ad4
      Robert Griesemer authored
      Change-Id: I7bf7154e2d8d779fdf7f1d2bb561a06ad174f3b0
      Reviewed-on: https://go-review.googlesource.com/4883Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      d9859ad4
    • David Crawshaw's avatar
      cmd/go: limit default darwin/arm parallelism · 291bf1f0
      David Crawshaw authored
      iOS devices can only run tests serially.
      
      Change-Id: I3f4e7abddf812a186895d9d5138999c8bded698f
      Reviewed-on: https://go-review.googlesource.com/5751Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      291bf1f0
    • Dmitry Vyukov's avatar
      sync: add active spinning to Mutex · edcad863
      Dmitry Vyukov authored
      Currently sync.Mutex is fully cooperative. That is, once contention is discovered,
      the goroutine calls into scheduler. This is suboptimal as the resource can become
      free soon after (especially if critical sections are short). Server software
      usually runs at ~~50% CPU utilization, that is, switching to other goroutines
      is not necessary profitable.
      
      This change adds limited active spinning to sync.Mutex if:
      1. running on a multicore machine and
      2. GOMAXPROCS>1 and
      3. there is at least one other running P and
      4. local runq is empty.
      As opposed to runtime mutex we don't do passive spinning,
      because there can be work on global runq on on other Ps.
      
      benchmark                   old ns/op     new ns/op     delta
      BenchmarkMutexNoSpin        1271          1272          +0.08%
      BenchmarkMutexNoSpin-2      702           683           -2.71%
      BenchmarkMutexNoSpin-4      377           372           -1.33%
      BenchmarkMutexNoSpin-8      197           190           -3.55%
      BenchmarkMutexNoSpin-16     131           122           -6.87%
      BenchmarkMutexNoSpin-32     170           164           -3.53%
      BenchmarkMutexSpin          4724          4728          +0.08%
      BenchmarkMutexSpin-2        2501          2491          -0.40%
      BenchmarkMutexSpin-4        1330          1325          -0.38%
      BenchmarkMutexSpin-8        684           684           +0.00%
      BenchmarkMutexSpin-16       414           372           -10.14%
      BenchmarkMutexSpin-32       559           469           -16.10%
      
      BenchmarkMutex                 19.1          19.1          +0.00%
      BenchmarkMutex-2               81.6          54.3          -33.46%
      BenchmarkMutex-4               143           100           -30.07%
      BenchmarkMutex-8               154           156           +1.30%
      BenchmarkMutex-16              140           159           +13.57%
      BenchmarkMutex-32              141           163           +15.60%
      BenchmarkMutexSlack            33.3          31.2          -6.31%
      BenchmarkMutexSlack-2          122           97.7          -19.92%
      BenchmarkMutexSlack-4          168           158           -5.95%
      BenchmarkMutexSlack-8          152           158           +3.95%
      BenchmarkMutexSlack-16         140           159           +13.57%
      BenchmarkMutexSlack-32         146           162           +10.96%
      BenchmarkMutexWork             154           154           +0.00%
      BenchmarkMutexWork-2           89.2          89.9          +0.78%
      BenchmarkMutexWork-4           139           86.1          -38.06%
      BenchmarkMutexWork-8           177           162           -8.47%
      BenchmarkMutexWork-16          170           173           +1.76%
      BenchmarkMutexWork-32          176           176           +0.00%
      BenchmarkMutexWorkSlack        160           160           +0.00%
      BenchmarkMutexWorkSlack-2      103           99.1          -3.79%
      BenchmarkMutexWorkSlack-4      155           148           -4.52%
      BenchmarkMutexWorkSlack-8      176           170           -3.41%
      BenchmarkMutexWorkSlack-16     170           173           +1.76%
      BenchmarkMutexWorkSlack-32     175           176           +0.57%
      
      "No work" benchmarks are not very interesting (BenchmarkMutex and
      BenchmarkMutexSlack), as they are absolutely not realistic.
      
      Fixes #8889
      
      Change-Id: I6f14f42af1fa48f73a776fdd11f0af6dd2bb428b
      Reviewed-on: https://go-review.googlesource.com/5430Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
      edcad863
    • Mikio Hara's avatar
      net: enable TestTCPReadWriteAllocs in short mode · 3dd029aa
      Mikio Hara authored
      The change 2096 removed unwanted allocations and a few noises in test
      using AllocsPerRun. Now it's safe to enable this canary test on netpoll
      hotpaths.
      
      Change-Id: Icdbee813d81c1410a48ea9960d46447042976905
      Reviewed-on: https://go-review.googlesource.com/5713Reviewed-by: 's avatarDmitry Vyukov <dvyukov@google.com>
      3dd029aa
    • Adam Langley's avatar
      crypto/rsa: drop the primality check in crypto/rsa.Validate. · 7c7126cf
      Adam Langley authored
      This check is expensive and adversely impacts startup times for some
      servers with several, large RSA keys.
      
      It was nice to have, but it's not really going to stop a targetted
      attack and was never designed to – hopefully people's private keys
      aren't attacker controlled!
      
      Overall I think the feeling is that people would rather have the CPU
      time back.
      
      Fixes #6626.
      
      Change-Id: I0143a58c9f22381116d4ca2a3bbba0d28575f3e5
      Reviewed-on: https://go-review.googlesource.com/5641Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Adam Langley <agl@golang.org>
      7c7126cf
  2. 23 Feb, 2015 30 commits
  3. 22 Feb, 2015 3 commits