mirror of https://github.com/oxen-io/lokinet
Merge pull request #721 from majestrate/fix-dht-2019-07-19
handle dht case
This commit is contained in:
commit
f154c9a0d0
|
@ -73,8 +73,9 @@ def main():
|
|||
fp = os.path.join(d, 'daemon.ini')
|
||||
with open(fp, 'w') as f:
|
||||
config.write(f)
|
||||
for n in range(args.connect):
|
||||
f.write("[bootstrap]\nadd-node={}\n".format(os.path.join(basedir,svcNodeName((nodeid + 1 + n) % args.svc), 'rc.signed')))
|
||||
for n in [0]:
|
||||
if nodeid:
|
||||
f.write("[bootstrap]\nadd-node={}\n".format(os.path.join(basedir,svcNodeName(n), 'rc.signed')))
|
||||
|
||||
|
||||
for nodeid in range(args.clients):
|
||||
|
|
|
@ -41,6 +41,12 @@ namespace llarp
|
|||
util::StatusObject
|
||||
ExtractStatus() const override;
|
||||
|
||||
void
|
||||
StoreRC(const RouterContact rc) const override
|
||||
{
|
||||
GetRouter()->nodedb()->InsertAsync(rc);
|
||||
}
|
||||
|
||||
/// on behalf of whoasked request introset for target from dht router with
|
||||
/// key askpeer
|
||||
void
|
||||
|
@ -430,9 +436,8 @@ namespace llarp
|
|||
{
|
||||
if(next == target)
|
||||
{
|
||||
// we know it
|
||||
replies.emplace_back(new GotRouterMessage(
|
||||
requester, txid, {_nodes->nodes[target].rc}, false));
|
||||
// we know it, ask them directly for their own RC to keep it updated
|
||||
LookupRouterRecursive(target.as_array(), requester, txid, next);
|
||||
}
|
||||
else if(recursive) // are we doing a recursive lookup?
|
||||
{
|
||||
|
@ -671,8 +676,8 @@ namespace llarp
|
|||
const Key_t& askpeer)
|
||||
|
||||
{
|
||||
TXOwner peer(askpeer, ++ids);
|
||||
TXOwner whoasked(OurKey(), txid);
|
||||
const TXOwner peer(askpeer, ++ids);
|
||||
const TXOwner whoasked(OurKey(), txid);
|
||||
_pendingRouterLookups.NewTX(
|
||||
peer, whoasked, target,
|
||||
new LocalRouterLookup(path, txid, target, this));
|
||||
|
@ -684,8 +689,8 @@ namespace llarp
|
|||
const Key_t& askpeer,
|
||||
RouterLookupHandler handler)
|
||||
{
|
||||
TXOwner asker(whoasked, txid);
|
||||
TXOwner peer(askpeer, ++ids);
|
||||
const TXOwner asker(whoasked, txid);
|
||||
const TXOwner peer(askpeer, ++ids);
|
||||
_pendingRouterLookups.NewTX(
|
||||
peer, asker, target,
|
||||
new RecursiveRouterLookup(asker, target, this, handler));
|
||||
|
|
|
@ -175,6 +175,9 @@ namespace llarp
|
|||
|
||||
virtual util::StatusObject
|
||||
ExtractStatus() const = 0;
|
||||
|
||||
virtual void
|
||||
StoreRC(const RouterContact rc) const = 0;
|
||||
};
|
||||
|
||||
std::unique_ptr< AbstractContext >
|
||||
|
|
|
@ -169,7 +169,7 @@ namespace llarp
|
|||
return false;
|
||||
}
|
||||
RouterContact found;
|
||||
Key_t k{K};
|
||||
const Key_t k{K};
|
||||
if(exploritory)
|
||||
return dht.HandleExploritoryRouterLookup(From, txid, K, replies);
|
||||
if(!dht.GetRouter()->ConnectionToRouterAllowed(K))
|
||||
|
@ -178,13 +178,7 @@ namespace llarp
|
|||
replies.emplace_back(new GotRouterMessage(k, txid, {}, false));
|
||||
return true;
|
||||
}
|
||||
if(dht.Nodes()->HasNode(k))
|
||||
{
|
||||
found = dht.Nodes()->nodes[k].rc;
|
||||
replies.emplace_back(new GotRouterMessage(k, txid, {found}, false));
|
||||
return true;
|
||||
}
|
||||
else if(dht.GetRCFromNodeDB(k, found))
|
||||
if(dht.GetRCFromNodeDB(k, found))
|
||||
{
|
||||
replies.emplace_back(new GotRouterMessage(k, txid, {found}, false));
|
||||
return true;
|
||||
|
|
|
@ -70,11 +70,16 @@ namespace llarp
|
|||
{
|
||||
resultHandler(valuesFound);
|
||||
}
|
||||
|
||||
if(whoasked.node != parent->OurKey())
|
||||
else if(whoasked.node != parent->OurKey())
|
||||
{
|
||||
parent->DHTSendTo(
|
||||
whoasked.node.as_array(),
|
||||
new GotRouterMessage({}, whoasked.txid, valuesFound, false), false);
|
||||
|
||||
// store this in our nodedb for caching
|
||||
if(valuesFound.size() > 0)
|
||||
parent->StoreRC(valuesFound[0]);
|
||||
}
|
||||
}
|
||||
} // namespace dht
|
||||
} // namespace llarp
|
||||
|
|
|
@ -11,6 +11,9 @@ namespace llarp
|
|||
{
|
||||
struct MockContext final : public dht::AbstractContext
|
||||
{
|
||||
|
||||
MOCK_CONST_METHOD1(StoreRC, void(const RouterContact));
|
||||
|
||||
MOCK_METHOD2(LookupRouter, bool(const RouterID&, RouterLookupHandler));
|
||||
|
||||
MOCK_METHOD5(LookupRouterRecursive,
|
||||
|
|
Loading…
Reference in New Issue