Skip to content
This repository has been archived by the owner on Feb 24, 2021. It is now read-only.

avoid holding the message writer longer than necessary #49

Merged
merged 1 commit into from
Jun 15, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions protocol.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,7 @@ const nonceSize = 16
type secureSession struct {
msgio.ReadWriteCloser

insecure net.Conn
insecureM msgio.ReadWriter
insecure net.Conn

localKey ci.PrivKey
localPeer peer.ID
Expand Down Expand Up @@ -88,7 +87,6 @@ func newSecureSession(ctx context.Context, local peer.ID, key ci.PrivKey, insecu
}

s.insecure = insecure
s.insecureM = msgio.NewReadWriter(insecure)
s.remotePeer = remotePeer

handshakeCtx, cancel := context.WithTimeout(ctx, HandshakeTimeout) // remove
Expand Down Expand Up @@ -135,6 +133,7 @@ func (s *secureSession) runHandshake(ctx context.Context) error {
}

func (s *secureSession) runHandshakeSync() error {
insecureM := msgio.NewReadWriter(s.insecure)
// =============================================================================
// step 1. Propose -- propose cipher suite + send pubkeys + nonce

Expand Down Expand Up @@ -169,11 +168,11 @@ func (s *secureSession) runHandshakeSync() error {
}

// Send Propose packet and Receive their Propose packet
proposeInBytes, err := readWriteMsg(s.insecureM, proposeOutBytes)
proposeInBytes, err := readWriteMsg(insecureM, proposeOutBytes)
if err != nil {
return err
}
defer s.insecureM.ReleaseMsg(proposeInBytes)
defer insecureM.ReleaseMsg(proposeInBytes)

// Parse their propose packet
proposeIn := new(pb.Propose)
Expand Down Expand Up @@ -280,11 +279,11 @@ func (s *secureSession) runHandshakeSync() error {
}

// Send Exchange packet and receive their Exchange packet
exchangeInBytes, err := readWriteMsg(s.insecureM, exchangeOutBytes)
exchangeInBytes, err := readWriteMsg(insecureM, exchangeOutBytes)
if err != nil {
return err
}
defer s.insecureM.ReleaseMsg(exchangeInBytes)
defer insecureM.ReleaseMsg(exchangeInBytes)

// Parse their Exchange packet.
exchangeIn := new(pb.Exchange)
Expand Down