Existing handshake, version 0, exchanges a token twice to pass input and output separately with different TCP connections.
New handshake, version 1, uses a single connection for both input and output.
This reduces the number of TCP connections between client and server by a half and also simplifies server side code( after version 0 is removed.)
New client will try newer protocol version first and if fails, it falls back to the old protocol, by default. -0 or -1 may be used to explicitly specify the protocol version to use for a connection.
The server side will accept both versions.
This idea was mentioned in https://reviews.freebsd.org/D26168 .
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=132798 was the original bug report I filed and proposed a fix. Back then, same change was suggested but without compatibilities.