handshake: error out while sending + dbg
Juan Batiz-Benet committed
Sep 23, 2014 at 05:17 UTC
eaffabec4f8058b995964e214cf6cb35edd4ded9
1 file changed
+21
-5
crypto/spipe/handshake.go
+21
-5
@@ -67,8 +67,12 @@ func (s *SecurePipe) handshake() error {
67
return err
68
}
69
70
- // u.POut("sending encoded handshake\n")
71
- s.insecure.Out <- encoded
70
+ // Send our Propose packet
71
+ select {
72
+ case s.insecure.Out <- encoded:
73
+ case <-s.ctx.Done():
74
+ return ErrClosed
75
+ }
76
77
// Parse their Propose packet and generate an Exchange packet.
78
// Exchange = (EphemeralPubKey, Signature)
@@ -137,7 +141,12 @@ func (s *SecurePipe) handshake() error {
141
142
exEncoded, err := proto.Marshal(exPacket)
143
140
- s.insecure.Out <- exEncoded
144
+ // send out Exchange packet
145
+ select {
146
+ case s.insecure.Out <- exEncoded:
147
+ case <-s.ctx.Done():
148
+ return ErrClosed
149
+ }
150
151
// Parse their Exchange packet and generate a Finish packet.
152
// Finish = E('Finish')
@@ -182,7 +191,14 @@ func (s *SecurePipe) handshake() error {
191
192
finished := []byte("Finished")
193
185
- s.Out <- finished
194
+ // send finished msg
195
+ select {
196
+ case <-s.ctx.Done():
197
+ return ErrClosed
198
+ case s.Out <- finished:
199
+ }
200
+
201
+ // recv finished msg
202
var resp2 []byte
203
select {
204
case <-s.ctx.Done():
@@ -194,7 +210,7 @@ func (s *SecurePipe) handshake() error {
210
return errors.New("Negotiation failed.")
211
}
212
197
- u.DOut("[%s] identify: Got node id: %s\n", s.local.ID.Pretty(), s.remote.ID.Pretty())
213
+ u.DOut("[%s] handshake: Got node id: %s\n", s.local.ID.Pretty(), s.remote.ID.Pretty())
214
return nil
215
}
216