add reference counts to simply logic on when we unpoke route holes so that if some other peer uses the mapping we wont unmap it until the reference count on the route poker's entry is zero.
In commit a76acd4956 we attempted to fix
issues on service nodes that related to spamming service nodes with
traffc, but this caused a regression where clients could not connect
to the network.
However, we also did something idiotic with the protocol handshake.
The handshake logic was modified and caused client connections to
fail. This was due to a change in how we decided what a timed out
session is. We redo the close bug and revert the change to the
protocol handshake.
* create new component for selecting edge snodes as client (llarp::consensus::EdgeSelector)
* require llarp::AbstractRouter own a llarp::consensus::EdgeSelector
* make outbound_session_maker.cpp use llarp::consensus::EdgeSelector owned by llarp::AbstractRouter
when setting libunbound's upstream dns, we need to not pass in the square braces of an ipv6 address.
we also net udp handles have ipv6 address for the local ip.
when we queue cpu heavy work in lokinet to worker threads we make 1
job per function call. we call a lot of jobs so this coleases the jobs
into 1 job that we push off at the end of the event loop cycle,
reducing the number of jobs going across the omq proxy thread, in
theory reducing cpu usage.
This allows bencode-dump.py autodetect hex input and decode it on the
fly, which is quite convenient when working with binary-containing
bencoded data strings.
in rpc client, contention on a null lock happened.
fix this by making the sending of pings always done in the logic
thread. this is done by wrapping the lambda we made with EventLoop::make_caller()
-- Moved all RPCServer initialization logic to rpcserver constructor
-- Fixed config logic, fxn binding to rpc address, fxn adding rpc cats
-- router hive failed CI/CD resulting from outdated reference to rpcBindAddr
-- ipc socket as default hidden from windows (for now)
refactored config endpoint
- added rpc call script (contrib/omq-rpc.py)
- added new fxns to .ini config stuff
- added delete .ini file functionality to config endpoint
- added edge case control for config endpoint
add commented out line in clang-form for header reorg later
* Updated RpcServer Initialization and Logic
-- Moved all RPCServer initialization logic to rpcserver constructor
-- Fixed config logic, fxn binding to rpc address, fxn adding rpc cats
-- router hive failed CI/CD resulting from outdated reference to rpcBindAddr
-- ipc socket as default hidden from windows (for now)
Previously oxen-logging was erroneously hard-coded to use the target
"lokinet" for system logs. Obviously this is wrong for anything else
which uses oxen-logging and the system log. This changes our call to
add_sink to pass "lokinet" as the target rather than the config
filename, and updates oxen-logging to use that argument correctly.