You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lokinet/llarp/service
Jason Rhinelander 36792d4337
Fix multi-field < ordering
Lots and lots of places in the code had broken < operators because they
are returning something like:

    foo < other.foo or bar < other.bar;

but this breaks both the strict weak ordering requirements that are
required for the "Compare" requirement for things like
std::map/set/priority_queue.

For example:

    a = {.foo=1, .bar=3}
    b = {.foo=3, .bar=1}

does not have an ordering over a and b (both `a < b` and `b < a` are
satisfied at the same time).

This needs to be instead something like:

    foo < other.foo or (foo == other.foo and bar < other.bar)

but that's a bit clunkier, and it is easier to use std::tie for tuple's
built-in < comparison which does the right thing:

    std::tie(foo, bar) < std::tie(other.foo, other.bar)

(Initially I noticed this in SockAddr/sockaddr_in6, but upon further
investigation this extends to the major of multi-field `operator<`'s.)

This fixes it by using std::tie (or something similar) everywhere we are
doing multi-field inequalities.
2 years ago
..
address.cpp Crank oxen-mq to (1.2.)11; switch to oxen-encoding 2 years ago
address.hpp Replace logging with oxen-logger 2 years ago
async_key_exchange.cpp replace LLARP_PROTO_VERSION macro 2 years ago
async_key_exchange.hpp standardize include format and pragma once 3 years ago
auth.cpp make more platforms ignore libcrypt 2 years ago
auth.hpp add hashed password capability to endpoint auth by file 2 years ago
context.cpp Replace logging with oxen-logger 2 years ago
context.hpp make comments with colins in them not have them in it 2 years ago
convotag.cpp make the lokinet endpoint code work 3 years ago
convotag.hpp wire up snode traffic to quic 3 years ago
endpoint.cpp changeset for windows port 2 years ago
endpoint.hpp changeset for windows port 2 years ago
endpoint_state.cpp Remove dead code: netns, shell hooks 2 years ago
endpoint_state.hpp Remove dead code: netns, shell hooks 2 years ago
endpoint_types.hpp fix up client to snode codepath 3 years ago
endpoint_util.cpp Replace logging with oxen-logger 2 years ago
endpoint_util.hpp * tweak introset handover timeouts 3 years ago
handler.hpp add MarkAddressOutbound to plainquic 3 years ago
hidden_service_address_lookup.cpp add relayOrder awareness to introset lookups. 3 years ago
hidden_service_address_lookup.hpp make it so lookups dont time out 3 years ago
identity.cpp Add binary file slurp/dump utility functions 2 years ago
identity.hpp replace LLARP_PROTO_VERSION macro 2 years ago
info.cpp Remote util::Printer and related cruft 2 years ago
info.hpp Remote util::Printer and related cruft 2 years ago
intro.cpp Remote util::Printer and related cruft 2 years ago
intro.hpp Fix multi-field < ordering 2 years ago
intro_set.cpp llarp_buffer_t: rename badly named operator== 2 years ago
intro_set.hpp Remote util::Printer and related cruft 2 years ago
lns_tracker.cpp use var::variant and var::visit shims because apple is sux 3 years ago
lns_tracker.hpp Crank oxen-mq to (1.2.)11; switch to oxen-encoding 2 years ago
lookup.cpp make the lokinet endpoint code work 3 years ago
lookup.hpp only inform failure or success of introset lookups when all lookups have returned 3 years ago
name.cpp fix up some retarded bullshit 3 years ago
name.hpp standardize include format and pragma once 3 years ago
outbound_context.cpp Apply some lipstick to llarp_buffer_t 2 years ago
outbound_context.hpp prevent bizare half open state. (#1754) 3 years ago
pendingbuffer.hpp changeset for windows port 2 years ago
protocol.cpp llarp_buffer_t: rename badly named operator== 2 years ago
protocol.hpp replace LLARP_PROTO_VERSION macro 2 years ago
protocol_type.hpp Replace logging with oxen-logger 2 years ago
router_lookup_job.cpp standardize include format and pragma once 3 years ago
router_lookup_job.hpp standardize include format and pragma once 3 years ago
sendcontext.cpp changeset for windows port 2 years ago
sendcontext.hpp Fix client latency bug; De-shared_ptr IHopHandler queues 3 years ago
session.cpp improve log messages about expiring convotags 3 years ago
session.hpp improve log messages about expiring convotags 3 years ago
tag.cpp standardize include format and pragma once 3 years ago
tag.hpp Replace ::Hash nested structs with std::hash specializations 3 years ago
vanity.hpp standardize include format and pragma once 3 years ago