mirror of https://github.com/oxen-io/lokinet
do dht lookup for unknown routers
This commit is contained in:
parent
1288148999
commit
6e5ebd62bf
|
@ -630,8 +630,8 @@ llarp_dht_context_start(struct llarp_dht_context *ctx, const byte_t *key)
|
|||
}
|
||||
|
||||
void
|
||||
llarp_dh_lookup_router(struct llarp_dht_context *ctx,
|
||||
struct llarp_router_lookup_job *job)
|
||||
llarp_dht_lookup_router(struct llarp_dht_context *ctx,
|
||||
struct llarp_router_lookup_job *job)
|
||||
{
|
||||
job->dht = ctx;
|
||||
llarp_logic_queue_job(ctx->parent->logic,
|
||||
|
|
|
@ -104,14 +104,30 @@ llarp_router::HandleAsyncLoadRCForSendTo(llarp_async_load_rc *job)
|
|||
}
|
||||
else
|
||||
{
|
||||
// we don't have the RC locally
|
||||
// TODO: dht lookup
|
||||
|
||||
// discard pending messages
|
||||
router->DiscardOutboundFor(job->pubkey);
|
||||
// we don't have the RC locally so do a dht lookup
|
||||
llarp_router_lookup_job *lookup = new llarp_router_lookup_job;
|
||||
lookup->user = router;
|
||||
memcpy(lookup->target, job->rc.pubkey, PUBKEYSIZE);
|
||||
lookup->hook = &HandleDHTLookupForSendTo;
|
||||
llarp_dht_lookup_router(router->dht, lookup);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
llarp_router::HandleDHTLookupForSendTo(llarp_router_lookup_job *job)
|
||||
{
|
||||
llarp_router *self = static_cast< llarp_router * >(job->user);
|
||||
if(job->found)
|
||||
{
|
||||
llarp_router_try_connect(self, &job->result, 10);
|
||||
}
|
||||
else
|
||||
{
|
||||
self->DiscardOutboundFor(job->target);
|
||||
}
|
||||
delete job;
|
||||
}
|
||||
|
||||
void
|
||||
llarp_router::try_connect(fs::path rcfile)
|
||||
{
|
||||
|
|
|
@ -193,6 +193,9 @@ struct llarp_router
|
|||
|
||||
static void
|
||||
HandleAsyncLoadRCForSendTo(llarp_async_load_rc *async);
|
||||
|
||||
static void
|
||||
HandleDHTLookupForSendTo(llarp_router_lookup_job *job);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue