Commit e397e521 authored by Juan Batiz-Benet's avatar Juan Batiz-Benet

Merge pull request #772 from jbenet/dial-respect-ctx

p2p/net/conn: respect context on dialing
parents 6f166529 5171d3df
...@@ -31,13 +31,6 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) ( ...@@ -31,13 +31,6 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) (
logdial["encrypted"] = (d.PrivateKey != nil) // log wether this will be an encrypted dial or not. logdial["encrypted"] = (d.PrivateKey != nil) // log wether this will be an encrypted dial or not.
defer log.EventBegin(ctx, "connDial", logdial).Done() defer log.EventBegin(ctx, "connDial", logdial).Done()
maconn, err := d.rawConnDial(ctx, raddr, remote)
if err != nil {
logdial["dial"] = "failure"
logdial["error"] = err
return nil, err
}
var connOut Conn var connOut Conn
var errOut error var errOut error
done := make(chan struct{}) done := make(chan struct{})
...@@ -51,8 +44,15 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) ( ...@@ -51,8 +44,15 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) (
} }
}() }()
maconn, err := d.rawConnDial(ctx, raddr, remote)
if err != nil {
errOut = err
return
}
c, err := newSingleConn(ctx, d.LocalPeer, remote, maconn) c, err := newSingleConn(ctx, d.LocalPeer, remote, maconn)
if err != nil { if err != nil {
maconn.Close()
errOut = err errOut = err
return return
} }
...@@ -75,8 +75,8 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) ( ...@@ -75,8 +75,8 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) (
select { select {
case <-ctx.Done(): case <-ctx.Done():
maconn.Close()
logdial["error"] = ctx.Err() logdial["error"] = ctx.Err()
logdial["dial"] = "failure"
return nil, ctx.Err() return nil, ctx.Err()
case <-done: case <-done:
// whew, finished. // whew, finished.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment