do dht lookup for unknown routers

pull/1/head
Jeff Becker 6 years ago
parent 1288148999
commit 6e5ebd62bf
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -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,12 +104,28 @@ llarp_router::HandleAsyncLoadRCForSendTo(llarp_async_load_rc *job)
}
else
{
// we don't have the RC locally
// TODO: dht lookup
// 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);
}
}
// discard pending messages
router->DiscardOutboundFor(job->pubkey);
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

@ -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…
Cancel
Save