Commit 79ba610d authored by Steven Allen's avatar Steven Allen
Browse files

mocknet: create a connection on NewStream if we need one

That's what the Swarm does and that's what the function's documentation says it
does.
parent a8e25bf2
...@@ -330,26 +330,10 @@ func (pn *peernet) Connectedness(p peer.ID) inet.Connectedness { ...@@ -330,26 +330,10 @@ func (pn *peernet) Connectedness(p peer.ID) inet.Connectedness {
// NewStream returns a new stream to given peer p. // NewStream returns a new stream to given peer p.
// If there is no connection to p, attempts to create one. // If there is no connection to p, attempts to create one.
func (pn *peernet) NewStream(ctx context.Context, p peer.ID) (inet.Stream, error) { func (pn *peernet) NewStream(ctx context.Context, p peer.ID) (inet.Stream, error) {
pn.Lock() c, err := pn.DialPeer(ctx, p)
cs, found := pn.connsByPeer[p] if err != nil {
if !found || len(cs) < 1 { return nil, err
pn.Unlock()
return nil, fmt.Errorf("no connection to peer")
} }
// if many conns are found, how do we select? for now, randomly...
// this would be an interesting place to test logic that can measure
// links (network interfaces) and select properly
n := rand.Intn(len(cs))
var c *conn
for c = range cs {
if n == 0 {
break
}
n--
}
pn.Unlock()
return c.NewStream() return c.NewStream()
} }
......
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