work in progress to make searches use parallel threads per response, so one malicious node doesn't block progress from honest ones

This commit is contained in:
Arceliar 2020-02-08 20:15:48 -06:00
parent d7d0c2629c
commit d0e6846173
2 changed files with 80 additions and 65 deletions

View file

@ -130,8 +130,8 @@ func (c *Conn) search() error {
close(done)
}
}
sinfo := c.core.router.searches.newIterSearch(c.nodeID, c.nodeMask, searchCompleted)
sinfo.continueSearch()
sinfo, infos := c.core.router.searches.newIterSearch(c.nodeID, c.nodeMask, searchCompleted)
sinfo.continueSearch(infos)
} else {
err = errors.New("search already exists")
close(done)
@ -152,10 +152,11 @@ func (c *Conn) doSearch() {
if !isIn {
// Nothing was found, so create a new search
searchCompleted := func(sinfo *sessionInfo, e error) {}
sinfo = c.core.router.searches.newIterSearch(c.nodeID, c.nodeMask, searchCompleted)
var infos []*dhtInfo
sinfo, infos = c.core.router.searches.newIterSearch(c.nodeID, c.nodeMask, searchCompleted)
c.core.log.Debugf("%s DHT search started: %p", c.String(), sinfo)
// Start the search
sinfo.continueSearch()
sinfo.continueSearch(infos)
}
}
c.core.router.Act(c.session, routerWork)