diff --git a/router/handshake.go b/router/handshake.go index d61e6377..d3fd8424 100644 --- a/router/handshake.go +++ b/router/handshake.go @@ -112,18 +112,7 @@ func (conn *LocalConnection) handshake(enc *gob.Encoder, dec *gob.Decoder, accep conn.Decryptor = NewNonDecryptor(conn) } - toPeer := NewPeer(name, nickNameStr, uid, 0) - toPeer = conn.Router.Peers.FetchWithDefault(toPeer) - switch toPeer { - case nil: - return fmt.Errorf("Connection appears to be with different version of a peer we already know of") - case conn.local: - conn.remote = toPeer // have to do assigment here to ensure Shutdown releases ref count - return fmt.Errorf("Cannot connect to ourself") - default: - conn.remote = toPeer - return nil - } + return conn.setRemote(NewPeer(name, nickNameStr, uid, 0)) } func (conn *LocalConnection) handshakeSendRecv(localConnID uint64, usingPassword bool, enc *gob.Encoder, dec *gob.Decoder) (*FieldValidator, *[32]byte, error) { @@ -159,3 +148,17 @@ func (conn *LocalConnection) handshakeSendRecv(localConnID uint64, usingPassword fv.CheckEqual("PeerNameFlavour", PeerNameFlavour) return &fv, private, nil } + +func (conn *LocalConnection) setRemote(toPeer *Peer) error { + toPeer = conn.Router.Peers.FetchWithDefault(toPeer) + switch toPeer { + case nil: + return fmt.Errorf("Connection appears to be with different version of a peer we already know of") + case conn.local: + conn.remote = toPeer // have to do assigment here to ensure Shutdown releases ref count + return fmt.Errorf("Cannot connect to ourself") + default: + conn.remote = toPeer + return nil + } +}