Remove double-block on router actor

This commit is contained in:
Neil Alexander 2020-07-02 14:01:51 +01:00
parent 326fdd4cf9
commit ae8099819e
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -74,22 +74,24 @@ func (c *PacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
nodeMask[i] = 0xFF nodeMask[i] = 0xFF
} }
// TODO: This is all a mess
var err error var err error
var session *sessionInfo var session *sessionInfo
phony.Block(c.sessions.router, func() { phony.Block(c.sessions.router, func() {
var ok bool
session, ok = c.sessions.getByTheirPerm(boxPubKey) session, ok = c.sessions.getByTheirPerm(boxPubKey)
})
if !ok { if !ok {
nodeID, boxPubKey, err = c.sessions.router.core.Resolve(nodeID, nodeMask) nodeID, boxPubKey, err = c.sessions.router.core.Resolve(nodeID, nodeMask)
if err == nil { if err == nil {
session, _ = c.sessions.getByTheirPerm(boxPubKey) phony.Block(c.sessions.router, func() {
} session, ok = c.sessions.getByTheirPerm(boxPubKey)
}
}) })
}
}
if err != nil { if err != nil {
return 0, fmt.Errorf("failed to find session/start search: %w", err) return 0, fmt.Errorf("failed to find session/start search: %w", err)
} }
if session == nil { if !ok || session == nil {
return 0, errors.New("expected a session but there was none") return 0, errors.New("expected a session but there was none")
} }