Han-Wen Nienhuys 2e74c77368 ssh: rewrite (re)keying logic.
Use channels and a dedicated write loop for managing the rekeying
process.  This lets us collect packets to be written while a key
exchange is in progress.

Previously, the read loop ran the key exchange, and writers would
block if a key exchange was going on. If a reader wrote back a packet
while processing a read packet, it could block, stopping the read
loop, thus causing a deadlock.  Such coupled read/writes are inherent
with handling requests that want a response (eg. keepalive,
opening/closing channels etc.). The buffered channels (most channels
have capacity 16) papered over these problems, but under load SSH
connections would occasionally deadlock.

Fixes #18439.

Change-Id: I7c14ff4991fa3100a5d36025125d0cf1119c471d
Reviewed-on: https://go-review.googlesource.com/35012
Run-TryBot: Han-Wen Nienhuys <hanwen@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Han-Wen Nienhuys <hanwen@google.com>
2017-01-16 13:08:31 +00:00
2014-12-09 23:26:36 +00:00
2016-10-28 19:53:00 +00:00
2016-12-06 19:59:59 +00:00
2014-12-09 23:26:36 +00:00
2016-04-25 23:11:06 +00:00
2014-12-09 23:26:36 +00:00
2014-12-09 23:26:36 +00:00
2017-01-04 23:09:04 +00:00
2014-12-09 23:26:36 +00:00
2014-12-09 23:26:36 +00:00
2016-10-21 19:51:19 +00:00
2017-01-16 13:08:31 +00:00
2014-12-09 23:26:36 +00:00
2014-12-09 23:26:36 +00:00
2014-12-09 23:26:36 +00:00
2014-12-08 10:41:13 +11:00
2015-03-18 17:04:25 +00:00
2015-02-18 23:42:20 +00:00
2012-03-17 15:19:30 +11:00
2012-01-25 15:31:12 -05:00

This repository holds supplementary Go cryptography libraries.

To submit changes to this repository, see http://golang.org/doc/contribute.html.
S
Description
Mirror of ys-ll/crypto (GitHub), kept for paraterm builds
https://golang.org/x/crypto
Readme BSD-3-Clause
8.1 MiB
Languages
Go 88.6%
Assembly 11.1%
C 0.3%