dedup via txid not keyspace location

pull/1147/head
Jeff Becker 4 years ago
parent 76608b6b90
commit dd21cba1fe
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -525,10 +525,10 @@ namespace llarp
const llarp::PathID_t& path,
const Key_t& askpeer, uint64_t relayOrder)
{
TXOwner asker(OurKey(), txid);
TXOwner peer(askpeer, ++ids);
const TXOwner asker(OurKey(), txid);
const TXOwner peer(askpeer, ++ids);
_pendingIntrosetLookups.NewTX(
peer, asker, addr,
peer, asker, asker,
new LocalServiceAddressLookup(path, txid, relayOrder, addr, this,
askpeer));
}
@ -539,11 +539,10 @@ namespace llarp
const Key_t& tellpeer, bool relayed,
uint64_t relayOrder)
{
TXOwner asker(from, txid);
TXOwner peer(tellpeer, ++ids);
const Key_t addr(introset.derivedSigningKey);
const TXOwner asker(from, txid);
const TXOwner peer(tellpeer, ++ids);
_pendingIntrosetLookups.NewTX(
peer, asker, addr,
peer, asker, asker,
new PublishServiceJob(asker, introset, this, relayed, relayOrder));
}
@ -553,10 +552,10 @@ namespace llarp
const Key_t& askpeer, uint64_t relayOrder,
service::EncryptedIntroSetLookupHandler handler)
{
TXOwner asker(whoasked, txid);
TXOwner peer(askpeer, ++ids);
const TXOwner asker(whoasked, txid);
const TXOwner peer(askpeer, ++ids);
_pendingIntrosetLookups.NewTX(
peer, asker, addr,
peer, asker, asker,
new ServiceAddressLookup(asker, addr, this, relayOrder, handler));
}
@ -575,10 +574,10 @@ namespace llarp
const Key_t& addr, const Key_t& whoasked, uint64_t txid,
const Key_t& askpeer, service::EncryptedIntroSetLookupHandler handler)
{
TXOwner asker(whoasked, txid);
TXOwner peer(askpeer, ++ids);
const TXOwner asker(whoasked, txid);
const TXOwner peer(askpeer, ++ids);
_pendingIntrosetLookups.NewTX(
peer, asker, addr,
peer, asker, asker,
new ServiceAddressLookup(asker, addr, this, 0, handler), 1s);
}
@ -637,7 +636,7 @@ namespace llarp
const TXOwner peer(askpeer, ++ids);
const TXOwner whoasked(OurKey(), txid);
_pendingRouterLookups.NewTX(
peer, whoasked, target,
peer, whoasked, askpeer.as_array(),
new LocalRouterLookup(path, txid, target, this));
}

@ -26,7 +26,7 @@ namespace llarp
struct AbstractContext
{
using PendingIntrosetLookups =
TXHolder< Key_t, service::EncryptedIntroSet, Key_t::Hash >;
TXHolder< TXOwner, service::EncryptedIntroSet, TXOwner::Hash >;
using PendingRouterLookups =
TXHolder< RouterID, RouterContact, RouterID::Hash >;
using PendingExploreLookups =

@ -37,6 +37,9 @@ namespace llarp
return rid.ToString();
}
util::StatusObject
ExtractStatus() const;
std::string
ToString() const
{

@ -56,7 +56,7 @@ namespace llarp
llarp_dht_context *ctx,
std::vector< std::unique_ptr< IMessage > > &replies) const
{
auto now = ctx->impl->Now();
const auto now = ctx->impl->Now();
const auto keyStr = introset.derivedSigningKey.ToHex();
auto &dht = *ctx->impl;

@ -12,8 +12,7 @@ namespace llarp
PublishServiceJob::PublishServiceJob(
const TXOwner &asker, const service::EncryptedIntroSet &introset_,
AbstractContext *ctx, bool relayed_, uint64_t relayOrder_)
: TX< Key_t, service::EncryptedIntroSet >(
asker, Key_t{introset_.derivedSigningKey}, ctx)
: TX< TXOwner, service::EncryptedIntroSet >(asker, asker, ctx)
, relayed(relayed_)
, relayOrder(relayOrder_)
, introset(introset_)

@ -12,7 +12,7 @@ namespace llarp
{
namespace dht
{
struct PublishServiceJob : public TX< Key_t, service::EncryptedIntroSet >
struct PublishServiceJob : public TX< TXOwner, service::EncryptedIntroSet >
{
bool relayed;
uint64_t relayOrder;

@ -12,7 +12,8 @@ namespace llarp
ServiceAddressLookup::ServiceAddressLookup(
const TXOwner &asker, const Key_t &addr, AbstractContext *ctx,
uint32_t order, service::EncryptedIntroSetLookupHandler handler)
: TX< Key_t, service::EncryptedIntroSet >(asker, addr, ctx)
: TX< TXOwner, service::EncryptedIntroSet >(asker, asker, ctx)
, location(addr)
, handleResult(std::move(handler))
, relayOrder(order)
{
@ -28,7 +29,7 @@ namespace llarp
llarp::LogWarn("Got invalid introset from service lookup");
return false;
}
if(value.derivedSigningKey != target)
if(value.derivedSigningKey != location)
{
llarp::LogWarn("got introset with wrong target from service lookup");
return false;
@ -40,7 +41,7 @@ namespace llarp
ServiceAddressLookup::Start(const TXOwner &peer)
{
parent->DHTSendTo(peer.node.as_array(),
new FindIntroMessage(peer.txid, target, relayOrder));
new FindIntroMessage(peer.txid, location, relayOrder));
}
void

@ -12,8 +12,10 @@ namespace llarp
{
struct TXOwner;
struct ServiceAddressLookup : public TX< Key_t, service::EncryptedIntroSet >
struct ServiceAddressLookup
: public TX< TXOwner, service::EncryptedIntroSet >
{
Key_t location;
service::EncryptedIntroSetLookupHandler handleResult;
uint32_t relayOrder;

@ -38,7 +38,7 @@ namespace llarp
ExtractStatus() const
{
util::StatusObject obj{{"whoasked", whoasked.ExtractStatus()},
{"target", target.ToString()}};
{"target", target.ExtractStatus()}};
std::vector< util::StatusObject > foundObjs;
std::transform(valuesFound.begin(), valuesFound.end(),
std::back_inserter(foundObjs),

@ -43,14 +43,14 @@ namespace llarp
timeouts.begin(), timeouts.end(), std::back_inserter(timeoutsObjs),
[](const auto& item) -> util::StatusObject {
return util::StatusObject{{"time", to_json(item.second)},
{"target", item.first.ToString()}};
{"target", item.first.ExtractStatus()}};
});
obj["timeouts"] = timeoutsObjs;
std::transform(waiting.begin(), waiting.end(),
std::back_inserter(waitingObjs),
[](const auto& item) -> util::StatusObject {
return util::StatusObject{
{"target", item.first.ToString()},
{"target", item.first.ExtractStatus()},
{"whoasked", item.second.ExtractStatus()}};
});
obj["waiting"] = waitingObjs;

Loading…
Cancel
Save