foreach_connection() can race with connection destruction while the
protocol handler remains in the raw-pointer map. Use the non-throwing
weak_from_this().lock() in add_ref() and treat expired connections as
unavailable.
This is an interim mitigation pending the broader connection lifetime
fix in PR 7345.
Opening a file with a zero sharing mode makes read-only access exclusive
on Windows. Allow read and write sharing so callers can inspect files
that are already open, such as active log files.
Each symbol below has no references anywhere in the tree (src/, contrib/,
tests/); the full build still links cleanly. Per-symbol history is given so the
"why is this unused" is auditable (hashes are ancestors of HEAD).
net/connection_basic (all four lost their last caller in the 2022 connection
rewrite, 3be1dbd09 "connection: fix implementation"):
- to_string(t_connection_type): unused free function. Added 9bfa593ee (2015)
to print a connection's type in a debug log; 3be1dbd09 (2022) switched that
log line to std::to_string on the enum, orphaning this overload.
- do_send_handler_write / do_send_handler_write_from_queue: trace-only stubs
added eabb51960 (2015) on the TCP send path; their calls in do_send_chunk /
the write-completion handler were deleted by 3be1dbd09 (2022). The real send
path is connection<T>::start_write().
- sleep_before_packet: outbound rate-limit sleep added eabb51960 (2015);
callers were thinned over time (cf5f62361, 2017) and the last removed by
3be1dbd09 (2022). Rate-limiting now lives in connection<T>::start_write()
via the global out-throttle.
net/levin_base:
- struct bucket_head: legacy levin packet header from the 2014 epee import,
superseded by bucket_head2 (the wire header, `using header = bucket_head2`).
Its last use went away with the old levin_protocol_handler in 0c545f614
(2024, "epee/test: remove levin_protocol_handler and core_proxy tests").
- LEVIN_PROTOCOL_VER_0: dead on arrival - present since the 2014 import, never
referenced (the code uses LEVIN_PROTOCOL_VER_1).
net/net_utils_base (connection-context logging macros):
- LOG_PRINT_CC_L4: levin trace macro (2014 import); all call sites removed in
5833d66f6 (2017, "Change logging to easylogging++").
- LOG_PRINT_CCONTEXT_L3: had a single "REMOTE PEERLIST" call site, removed in
the same 5833d66f6 (2017).
- LOG_PRINT_CC_L3: only ever referenced inside LOG_PRINT_CCONTEXT_L3's body,
never invoked directly - transitively dead once the above was removed.
- LOG_CC: dead on arrival - added in 5833d66f6 (2017) but never invoked.
(The plain LOG_PRINT_L3 macro that LOG_PRINT_CC_L3/CCONTEXT_L3 wrap is still
used elsewhere and is left untouched; only these unused CC wrappers go.)
net/network_throttle:
- typedef network_MB: added eabb51960 (2015); its only consumers
(set_target_kill / m_target_MB) were stripped the same day in 5ce4256e3
(2015), leaving an unused typedef.
profile_tools:
- START_WAY_POINTS / WAY_POINT / WAY_POINT2: dead on arrival - upstream-epee
profiling macros present since the 2014 import, never once invoked (they only
ever appear as definitions in profile_tools.h across all history).
- TIME_MEASURE_PAUSE / TIME_MEASURE_RESTART and their _NS_ variants: dead on
arrival - added bda8c5983 (2017, "epee: add nanosecond timer and pause/restart
profiling macros") but never wired to any call site. Of this family only
TIME_MEASURE_START / TIME_MEASURE_FINISH are actually used.
storages:
- typedef binarybuffer (portable_storage_base): used by the binary store/load
API since the 2014 import; its last consumer (store_to_binary) was removed in
7414e2bac (2020, "Change epee binary output from std::stringstream to
byte_stream").
- the templated min_bytes() member declaration (portable_storage_from_bin):
declared but never defined or called. Added 7f407c027 (2020-12-26,
"portable_storage: add some sanity checks on data size") alongside the
ps_min_bytes<> trait struct, but the size checks were implemented via that
trait (ps_min_bytes<>::strict), so this member was never defined or wired up
- dead on arrival. The ps_min_bytes<> trait remains in use and is left intact.
d42de75 tests: cover truncated \u escape at end of buffer in match_string2 (alhudz)
524b0d0 fix off-by-one over-read in match_string2 unicode escape parsing (alhudz)