Make NegotiateVersionOutbound a public function

This is needed to allow creating a Connection for an arbitrary
application-provided io.ReadWriteCloser, instead of doing network logic
inside of go-ricochet. ricochet-go does its own connection management.

I would rather rework this API so that Connection has two construct
methods, inbound and outbound, that do version negotiation and are
always used. The methods that do networking and construct a Connection
would then be a separate (and non-root) package building on top of that.
This commit is contained in:
John Brooks 2017-08-13 20:05:34 -06:00
parent d2dceef028
commit 41d9401ca4
1 changed files with 2 additions and 2 deletions

View File

@ -20,7 +20,7 @@ func Open(remoteHostname string) (*connection.Connection, error) {
return nil, err
}
rc, err := negotiateVersion(conn, remoteHostname)
rc, err := NegotiateVersionOutbound(conn, remoteHostname)
if err != nil {
conn.Close()
return nil, err
@ -30,7 +30,7 @@ func Open(remoteHostname string) (*connection.Connection, error) {
// negotiate version takes an open network connection and executes
// the ricochet version negotiation procedure.
func negotiateVersion(conn net.Conn, remoteHostname string) (*connection.Connection, error) {
func NegotiateVersionOutbound(conn net.Conn, remoteHostname string) (*connection.Connection, error) {
versions := []byte{0x49, 0x4D, 0x01, 0x01}
if n, err := conn.Write(versions); err != nil || n < len(versions) {
return nil, utils.VersionNegotiationError