commit c2d5ec5e43c2690656ea5a5a384683108782d149 Merge: c4742b89b2 cdb0e6c252 Author: Nick Mathewson nickm@torproject.org Date: Thu Jul 30 14:27:29 2020 -0400
Merge branch 'maint-0.4.2' into bug40076_042
.gitignore | 16 +- .travis.yml | 18 +- ChangeLog | 2731 ++++++- LICENSE | 3 +- Makefile.am | 106 +- ReleaseNotes | 2437 +++++- autogen.sh | 5 +- changes/29241_diagnostic | 4 - changes/bug12399 | 3 - changes/bug13221 | 5 - changes/bug22619 | 3 - changes/bug23507 | 5 - changes/bug23818_v2 | 6 - changes/bug23818_v3 | 6 - changes/bug24661 | 3 - changes/bug27197 | 3 - changes/bug27199 | 3 - changes/bug27740 | 4 - changes/bug27741 | 5 - changes/bug27750 | 6 - changes/bug27800 | 4 - changes/bug27804 | 3 - changes/bug27841 | 7 - changes/bug27948 | 6 - changes/bug27963_timeradd | 4 - changes/bug27968 | 3 - changes/bug28096 | 13 - changes/bug28115 | 3 - changes/bug28127 | 7 - changes/bug28183 | 4 - changes/bug28202 | 4 - changes/bug28245 | 6 - changes/bug28298 | 4 - changes/bug28303 | 3 - changes/bug28348_034 | 5 - changes/bug28399 | 4 - changes/bug28413 | 4 - changes/bug28419 | 3 - changes/bug28435 | 3 - changes/bug28441 | 4 - changes/bug28454 | 4 - changes/bug28485 | 3 - changes/bug28524 | 4 - changes/bug28525 | 7 - changes/bug28554 | 3 - changes/bug28562 | 5 - changes/bug28568 | 4 - changes/bug28569 | 3 - changes/bug28612 | 4 - changes/bug28619 | 6 - changes/bug28656 | 3 - changes/bug28698 | 3 - changes/bug28895 | 5 - changes/bug28920 | 6 - changes/bug28938 | 4 - changes/bug28974 | 3 - changes/bug28979 | 4 - changes/bug28981 | 5 - changes/bug28995 | 5 - changes/bug29017 | 4 - changes/bug29029 | 5 - changes/bug29034 | 5 - changes/bug29036 | 5 - changes/bug29040 | 4 - changes/bug29042 | 5 - changes/bug29135 | 5 - changes/bug29144 | 5 - changes/bug29145 | 3 - changes/bug29161 | 3 - changes/bug29175_035 | 4 - changes/bug29241 | 6 - changes/bug29244 | 4 - changes/bug29530_035 | 5 - changes/bug29599 | 3 - changes/bug29601 | 6 - changes/bug29665 | 7 - changes/bug29670 | 4 - changes/bug29703 | 4 - changes/bug29706_minimal | 4 - changes/bug29875 | 11 - changes/bug29922 | 4 - changes/bug30011 | 4 - changes/bug30021 | 8 - changes/bug30040 | 9 - changes/bug30041 | 5 - changes/bug30148 | 4 - changes/bug30189 | 4 - changes/bug30190 | 3 - changes/bug30316 | 4 - changes/bug30452 | 3 - changes/bug30475 | 4 - changes/bug30561 | 6 - changes/bug30713 | 5 - changes/bug30744 | 3 - changes/bug30781 | 4 - changes/bug30894 | 4 - changes/bug30916 | 4 - changes/bug31003 | 4 - changes/bug31107 | 4 - changes/bug31335 | 3 + changes/bug31343 | 9 - changes/bug31408 | 5 - changes/bug31463 | 3 - changes/bug31571 | 7 - changes/bug31652 | 5 + changes/bug31657 | 5 - changes/bug31734 | 3 + changes/bug31810 | 4 + changes/bug31884 | 3 - changes/bug31922 | 4 + changes/bug31995 | 3 + changes/bug32106 | 5 + changes/bug32108 | 8 + changes/bug32124 | 7 + changes/bug32295 | 3 + changes/bug32402 | 3 + changes/bug32402_git_scripts | 3 + changes/bug32771 | 4 + changes/bug32778 | 3 + changes/bug32841 | 4 + changes/bug33087 | 4 + changes/bug33095_041 | 5 + changes/bug33104 | 4 + changes/bug34077 | 3 + changes/chutney_ci | 3 - changes/cid1444119 | 3 - changes/doc31089 | 4 - changes/geoip-2018-11-06 | 4 - changes/geoip-2018-12-05 | 4 - changes/geoip-2019-01-03 | 4 - changes/geoip-2019-02-05 | 4 - changes/geoip-2019-03-04 | 4 - changes/geoip-2019-04-02 | 4 - changes/geoip-2019-05-13 | 4 - changes/geoip-2019-06-10 | 4 - changes/geoip-2019-10-01 | 4 - changes/rust_asan | 8 - changes/ticket19566 | 6 - changes/ticket24803 | 5 - changes/ticket27471 | 5 - changes/ticket27751 | 2 - changes/ticket27838 | 4 - changes/ticket27913 | 3 - changes/ticket27995 | 4 - changes/ticket28026 | 3 - changes/ticket28113 | 5 - changes/ticket28128 | 4 - changes/ticket28229_diag | 3 - changes/ticket28275 | 4 - changes/ticket28318 | 3 - changes/ticket28459 | 4 - changes/ticket28574 | 4 - changes/ticket28668 | 3 - changes/ticket28669 | 6 - changes/ticket28795 | 5 - changes/ticket28838 | 8 - changes/ticket28851 | 4 - changes/ticket28879 | 5 - changes/ticket28881 | 4 - changes/ticket28883 | 4 - changes/ticket28912 | 6 - changes/ticket28924 | 4 - changes/ticket28973 | 6 - changes/ticket29026 | 4 - changes/ticket29160 | 4 - changes/ticket29168 | 5 - changes/ticket29435 | 3 - changes/ticket29617 | 4 - changes/ticket29669 | 3 + changes/ticket29702 | 4 - changes/ticket29806 | 7 - changes/ticket29962 | 3 - changes/ticket30117 | 4 - changes/ticket30213 | 3 - changes/ticket30234 | 2 - changes/ticket30454 | 10 - changes/ticket30591 | 3 - changes/ticket30694 | 3 - changes/ticket30871 | 6 - changes/ticket31091 | 3 + changes/ticket31189 | 3 + changes/ticket31372_appveyor | 4 - changes/ticket31372_travis | 4 - changes/ticket31374 | 4 - changes/ticket31406 | 3 - changes/ticket31466 | 5 - changes/ticket31554 | 4 - changes/ticket31673 | 3 - changes/ticket31682 | 3 + changes/ticket31687_1 | 4 - changes/ticket31687_2 | 5 - changes/ticket31841 | 5 + changes/ticket31958 | 5 + changes/ticket32063 | 3 + changes/ticket32191 | 3 + changes/ticket32705_disable | 7 + changes/ticket32765 | 4 + changes/ticket33029 | 5 + changes/ticket33290 | 4 + changes/ticket33619 | 5 + changes/ticket33623 | 2 + configure.ac | 133 +- contrib/README | 2 - contrib/client-tools/torify | 2 +- .../dirauth-tools/nagios-check-tor-authority-cert | 10 +- contrib/dist/suse/tor.sh.in | 118 - contrib/dist/tor.sh.in | 123 - contrib/dist/torctl.in | 195 - contrib/include.am | 4 - contrib/operator-tools/linux-tor-prio.sh | 192 - contrib/or-tools/check-tor | 41 - contrib/win32build/tor-mingw.nsi.in | 2 +- doc/HACKING/CodeStructure.md | 151 +- doc/HACKING/CodingStandards.md | 74 +- doc/HACKING/CodingStandardsRust.md | 6 +- doc/HACKING/EndOfLifeTor.md | 50 + doc/HACKING/Fuzzing.md | 14 +- doc/HACKING/HelpfulTools.md | 15 + doc/HACKING/HowToReview.md | 2 +- doc/HACKING/Maintaining.md | 113 + doc/HACKING/ReleasingTor.md | 145 +- doc/HACKING/design/00-overview.md | 124 + doc/HACKING/design/01-common-utils.md | 121 + doc/HACKING/design/01a-memory.md | 93 + doc/HACKING/design/01b-collections.md | 43 + doc/HACKING/design/01c-time.md | 75 + doc/HACKING/design/01d-crypto.md | 169 + doc/HACKING/design/01e-os-compat.md | 50 + doc/HACKING/design/01f-threads.md | 26 + doc/HACKING/design/01g-strings.md | 95 + doc/HACKING/design/02-dataflow.md | 236 + doc/HACKING/design/03-modules.md | 247 + doc/HACKING/design/Makefile | 34 + doc/HACKING/design/this-not-that.md | 51 + doc/asciidoc-helper.sh | 6 +- doc/include.am | 23 +- doc/tor-print-ed-signing-cert.1.txt | 6 + doc/tor.1.txt | 422 +- scripts/coccinelle/ctrl-reply-cleanup.cocci | 43 + scripts/coccinelle/ctrl-reply.cocci | 87 + scripts/coccinelle/debugmm.cocci | 29 + scripts/coccinelle/tor-coccinelle.h | 3 + scripts/codegen/fuzzing_include_am.py | 5 +- scripts/codegen/run_trunnel.sh | 4 +- scripts/git/git-merge-forward.sh | 428 ++ scripts/git/git-pull-all.sh | 260 + scripts/git/git-push-all.sh | 292 + scripts/git/post-merge.git-hook | 51 + scripts/git/pre-commit.git-hook | 59 + scripts/git/pre-push.git-hook | 106 + scripts/maint/add_c_file.py | 251 + scripts/maint/annotate_ifdef_directives | 74 - scripts/maint/annotate_ifdef_directives.py | 317 + scripts/maint/checkIncludes.py | 119 +- scripts/maint/checkShellScripts.sh | 61 + scripts/maint/checkSpace.pl | 34 +- scripts/maint/fallback.whitelist | 997 --- scripts/maint/format_changelog.py | 2 +- scripts/maint/generateFallbackDirLine.py | 38 - scripts/maint/lintChanges.py | 56 + scripts/maint/lookupFallbackDirContact.py | 28 - scripts/maint/practracker/README | 21 + scripts/maint/practracker/exceptions.txt | 335 + scripts/maint/practracker/includes.py | 285 + scripts/maint/practracker/metrics.py | 57 + scripts/maint/practracker/practracker.py | 303 + scripts/maint/practracker/practracker_tests.py | 67 + scripts/maint/practracker/problem.py | 242 + scripts/maint/practracker/test_practracker.sh | 70 + scripts/maint/practracker/testdata/.may_include | 3 + scripts/maint/practracker/testdata/a.c | 38 + scripts/maint/practracker/testdata/b.c | 15 + scripts/maint/practracker/testdata/ex.txt | 0 .../maint/practracker/testdata/ex0-expected.txt | 11 + scripts/maint/practracker/testdata/ex0.txt | 0 .../maint/practracker/testdata/ex1-expected.txt | 3 + .../testdata/ex1-overbroad-expected.txt | 2 + scripts/maint/practracker/testdata/ex1.txt | 18 + scripts/maint/practracker/testdata/header.h | 8 + scripts/maint/practracker/testdata/not_c_file | 2 + scripts/maint/practracker/util.py | 50 + scripts/maint/rectify_include_paths.py | 15 +- scripts/maint/run_calltool.sh | 4 +- scripts/maint/updateCopyright.pl | 6 +- scripts/maint/updateFallbackDirs.py | 2216 ------ scripts/maint/updateRustDependencies.sh | 18 +- scripts/maint/updateVersions.pl.in | 59 - scripts/maint/update_versions.py | 133 + scripts/test/chutney-git-bisect.sh | 14 +- scripts/test/cov-diff | 9 +- scripts/test/cov-test-determinism.sh | 51 + scripts/test/coverage | 18 +- scripts/test/scan-build.sh | 5 + src/app/config/config.c | 639 +- src/app/config/config.h | 7 +- src/app/config/confparse.c | 1207 --- src/app/config/confparse.h | 233 - src/app/config/or_options_st.h | 55 +- src/app/config/or_state_st.h | 18 +- src/app/config/statefile.c | 93 +- src/app/config/statefile.h | 2 +- src/app/config/testnet.inc | 33 + src/app/main/main.c | 294 +- src/app/main/main.h | 6 +- src/app/main/ntmain.c | 9 + src/app/main/shutdown.c | 167 + src/app/main/shutdown.h | 18 + src/app/main/subsysmgr.c | 252 + src/app/main/subsysmgr.h | 29 + src/app/main/subsystem_list.c | 71 + src/config/mmdb-convert.py | 4 +- src/config/torrc.minimal.in-staging | 3 + src/config/torrc.sample.in | 9 +- src/core/crypto/.may_include | 10 + src/core/crypto/hs_ntor.c | 14 +- src/core/crypto/onion_crypto.h | 2 +- src/core/crypto/relay_crypto.c | 48 +- src/core/crypto/relay_crypto.h | 11 + src/core/include.am | 102 +- src/core/mainloop/.may_include | 20 + src/core/mainloop/connection.c | 150 +- src/core/mainloop/connection.h | 10 +- src/core/mainloop/cpuworker.c | 7 +- src/core/mainloop/mainloop.c | 826 +- src/core/mainloop/mainloop.h | 20 +- src/core/mainloop/mainloop_pubsub.c | 170 + src/core/mainloop/mainloop_pubsub.h | 24 + src/core/mainloop/mainloop_sys.c | 32 + src/core/mainloop/mainloop_sys.h | 12 + src/core/mainloop/netstatus.c | 136 + src/core/mainloop/netstatus.h | 13 +- src/core/mainloop/periodic.c | 220 +- src/core/mainloop/periodic.h | 28 +- src/core/or/.may_include | 38 + src/core/or/addr_policy_st.h | 2 +- src/core/or/address_set.h | 2 +- src/core/or/cell_queue_st.h | 2 +- src/core/or/cell_st.h | 2 +- src/core/or/channel.c | 11 + src/core/or/channeltls.c | 136 +- src/core/or/channeltls.h | 1 - src/core/or/circuit_st.h | 64 +- src/core/or/circuitbuild.c | 206 +- src/core/or/circuitbuild.h | 14 +- src/core/or/circuitlist.c | 167 +- src/core/or/circuitlist.h | 34 +- src/core/or/circuitmux.c | 37 +- src/core/or/circuitmux_ewma.c | 12 +- src/core/or/circuitpadding.c | 3099 ++++++++ src/core/or/circuitpadding.h | 813 ++ src/core/or/circuitpadding_machines.c | 456 ++ src/core/or/circuitpadding_machines.h | 35 + src/core/or/circuitstats.c | 12 +- src/core/or/circuituse.c | 47 +- src/core/or/command.c | 4 +- src/core/or/connection_edge.c | 74 +- src/core/or/connection_edge.h | 1 + src/core/or/connection_or.c | 184 +- src/core/or/connection_or.h | 30 +- src/core/or/connection_st.h | 2 +- src/core/or/cpath_build_state_st.h | 2 +- src/core/or/crypt_path.c | 262 + src/core/or/crypt_path.h | 46 + src/core/or/crypt_path_reference_st.h | 2 +- src/core/or/crypt_path_st.h | 25 +- src/core/or/destroy_cell_queue_st.h | 2 +- src/core/or/dos.h | 4 +- src/core/or/edge_connection_st.h | 2 +- src/core/or/entry_connection_st.h | 2 +- src/core/or/entry_port_cfg_st.h | 2 +- src/core/or/extend_info_st.h | 2 +- src/core/or/half_edge_st.h | 2 +- src/core/or/listener_connection_st.h | 2 +- src/core/or/ocirc_event.c | 128 + src/core/or/ocirc_event.h | 72 + src/core/or/ocirc_event_sys.h | 13 + src/core/or/or.h | 15 +- src/core/or/or_circuit_st.h | 18 +- src/core/or/or_connection_st.h | 4 +- src/core/or/or_handshake_certs_st.h | 2 +- src/core/or/or_handshake_state_st.h | 2 +- src/core/or/or_periodic.c | 65 + src/core/or/or_periodic.h | 17 + src/core/or/or_sys.c | 43 + src/core/or/or_sys.h | 17 + src/core/or/orconn_event.c | 99 + src/core/or/orconn_event.h | 103 + src/core/or/orconn_event_sys.h | 12 + src/core/or/origin_circuit_st.h | 6 +- src/core/or/policies.c | 196 +- src/core/or/policies.h | 3 + src/core/or/port_cfg_st.h | 2 +- src/core/or/protover.c | 16 +- src/core/or/protover.h | 24 +- src/core/or/relay.c | 713 +- src/core/or/relay.h | 19 +- src/core/or/relay_crypto_st.h | 4 +- src/core/or/scheduler.c | 4 +- src/core/or/scheduler_kist.c | 10 +- src/core/or/sendme.c | 710 ++ src/core/or/sendme.h | 80 + src/core/or/server_port_cfg_st.h | 2 +- src/core/or/socks_request_st.h | 2 +- src/core/or/tor_version_st.h | 2 +- src/core/or/var_cell_st.h | 2 +- src/core/or/versions.c | 108 +- src/core/or/versions.h | 4 + src/core/proto/.may_include | 10 + src/core/proto/proto_cell.c | 2 +- src/core/proto/proto_control0.c | 2 +- src/core/proto/proto_ext_or.c | 2 +- src/core/proto/proto_http.c | 2 +- src/core/proto/proto_socks.c | 4 +- src/ext/.may_include | 10 + src/ext/csiphash.c | 18 +- src/ext/include.am | 2 + src/ext/readpassphrase.c | 2 +- src/ext/timeouts/.may_include | 5 + src/ext/timeouts/test-timeout.c | 2 +- src/ext/timeouts/timeout.c | 11 +- src/ext/timeouts/timeout.h | 4 +- src/ext/tinytest.c | 6 + src/ext/tinytest.h | 3 + src/ext/trunnel/trunnel-impl.h | 2 +- src/ext/trunnel/trunnel.c | 2 +- src/ext/trunnel/trunnel.h | 2 +- src/feature/api/tor_api.c | 4 +- src/feature/api/tor_api.h | 2 +- src/feature/client/addressmap.c | 2 +- src/feature/client/bridges.c | 5 +- src/feature/client/circpathbias.c | 37 +- src/feature/client/dnsserv.c | 8 +- src/feature/client/entrynodes.c | 4 +- src/feature/client/transports.c | 368 +- src/feature/client/transports.h | 18 +- src/feature/control/btrack.c | 64 + src/feature/control/btrack_circuit.c | 166 + src/feature/control/btrack_circuit.h | 18 + src/feature/control/btrack_orconn.c | 206 + src/feature/control/btrack_orconn.h | 41 + src/feature/control/btrack_orconn_cevent.c | 160 + src/feature/control/btrack_orconn_cevent.h | 18 + src/feature/control/btrack_orconn_maps.c | 223 + src/feature/control/btrack_orconn_maps.h | 18 + src/feature/control/btrack_sys.h | 14 + src/feature/control/control.c | 7994 +------------------- src/feature/control/control.h | 374 +- src/feature/control/control_auth.c | 441 ++ src/feature/control/control_auth.h | 32 + src/feature/control/control_bootstrap.c | 383 + src/feature/control/control_cmd.c | 2399 ++++++ src/feature/control/control_cmd.h | 113 + src/feature/control/control_cmd_args_st.h | 52 + src/feature/control/control_connection_st.h | 5 +- src/feature/control/control_events.c | 2306 ++++++ src/feature/control/control_events.h | 352 + src/feature/control/control_fmt.c | 181 + src/feature/control/control_fmt.h | 23 + src/feature/control/control_getinfo.c | 1654 ++++ src/feature/control/control_getinfo.h | 61 + src/feature/control/control_proto.c | 277 + src/feature/control/control_proto.h | 48 + src/feature/control/fmt_serverstatus.c | 8 +- src/feature/control/fmt_serverstatus.h | 2 +- src/feature/control/getinfo_geoip.h | 2 +- src/feature/dirauth/authmode.h | 6 +- src/feature/dirauth/bridgeauth.c | 55 + src/feature/dirauth/bridgeauth.h | 12 + src/feature/dirauth/bwauth.c | 61 +- src/feature/dirauth/bwauth.h | 6 +- src/feature/dirauth/dirauth_periodic.c | 161 + src/feature/dirauth/dirauth_periodic.h | 25 + src/feature/dirauth/dirauth_sys.c | 40 + src/feature/dirauth/dirauth_sys.h | 12 + src/feature/dirauth/dirvote.c | 130 +- src/feature/dirauth/dirvote.h | 15 +- src/feature/dirauth/dsigs_parse.c | 2 +- src/feature/dirauth/dsigs_parse.h | 2 +- src/feature/dirauth/guardfraction.h | 2 +- src/feature/dirauth/keypin.c | 2 +- src/feature/dirauth/keypin.h | 18 +- src/feature/dirauth/ns_detached_signatures_st.h | 2 +- src/feature/dirauth/process_descs.c | 108 +- src/feature/dirauth/process_descs.h | 90 +- src/feature/dirauth/reachability.h | 33 +- src/feature/dirauth/recommend_pkg.h | 14 +- src/feature/dirauth/shared_random.c | 14 +- src/feature/dirauth/shared_random.h | 6 +- src/feature/dirauth/shared_random_state.c | 138 +- src/feature/dirauth/vote_microdesc_hash_st.h | 2 +- src/feature/dirauth/voteflags.c | 108 +- src/feature/dirauth/voteflags.h | 20 +- src/feature/dircache/cached_dir_st.h | 2 +- src/feature/dircache/conscache.c | 2 +- src/feature/dircache/consdiffmgr.c | 83 +- src/feature/dircache/consdiffmgr.h | 11 +- src/feature/dircache/dircache.c | 194 +- src/feature/dircache/dircache.h | 2 +- src/feature/dircache/dirserv.c | 25 +- src/feature/dircache/dirserv.h | 1 + src/feature/dirclient/dir_server_st.h | 2 +- src/feature/dirclient/dirclient.c | 27 +- src/feature/dirclient/dirclient.h | 2 +- src/feature/dirclient/dlstatus.h | 2 +- src/feature/dirclient/download_status_st.h | 2 +- src/feature/dircommon/consdiff.c | 42 +- src/feature/dircommon/consdiff.h | 15 +- src/feature/dircommon/dir_connection_st.h | 2 +- src/feature/dircommon/directory.c | 84 + src/feature/dircommon/directory.h | 1 + src/feature/dircommon/vote_timing_st.h | 2 +- src/feature/dircommon/voting_schedule.c | 2 +- src/feature/dircommon/voting_schedule.h | 2 +- src/feature/dirparse/authcert_parse.c | 16 +- src/feature/dirparse/authcert_parse.h | 1 + src/feature/dirparse/microdesc_parse.c | 316 +- src/feature/dirparse/microdesc_parse.h | 2 +- src/feature/dirparse/ns_parse.c | 59 +- src/feature/dirparse/ns_parse.h | 14 +- src/feature/dirparse/parsecommon.c | 53 +- src/feature/dirparse/routerparse.c | 4 +- src/feature/dirparse/sigcommon.h | 2 +- src/feature/dirparse/signing.h | 2 +- src/feature/dirparse/unparseable.h | 4 +- src/feature/hibernate/hibernate.c | 35 +- src/feature/hibernate/hibernate.h | 1 + src/feature/hs/hs_cache.c | 5 + src/feature/hs/hs_cell.c | 143 +- src/feature/hs/hs_cell.h | 11 + src/feature/hs/hs_circuit.c | 106 +- src/feature/hs/hs_circuitmap.c | 27 + src/feature/hs/hs_circuitmap.h | 2 + src/feature/hs/hs_client.c | 64 +- src/feature/hs/hs_client.h | 4 + src/feature/hs/hs_common.c | 193 +- src/feature/hs/hs_common.h | 7 +- src/feature/hs/hs_config.c | 79 +- src/feature/hs/hs_config.h | 9 + src/feature/hs/hs_control.c | 39 +- src/feature/hs/hs_control.h | 4 + src/feature/hs/hs_descriptor.c | 348 +- src/feature/hs/hs_descriptor.h | 34 +- src/feature/hs/hs_dos.c | 200 + src/feature/hs/hs_dos.h | 39 + src/feature/hs/hs_ident.c | 6 +- src/feature/hs/hs_ident.h | 10 +- src/feature/hs/hs_intropoint.c | 221 +- src/feature/hs/hs_intropoint.h | 3 + src/feature/hs/hs_service.c | 259 +- src/feature/hs/hs_service.h | 18 +- src/feature/hs/hs_stats.h | 4 + src/feature/hs/hsdir_index_st.h | 2 +- src/feature/hs_common/shared_random_client.h | 2 +- src/feature/keymgt/loadkey.h | 2 +- src/feature/nodelist/authcert.c | 3 +- src/feature/nodelist/authcert.h | 2 +- src/feature/nodelist/authority_cert_st.h | 2 +- src/feature/nodelist/desc_store_st.h | 2 +- src/feature/nodelist/describe.c | 172 +- src/feature/nodelist/describe.h | 34 +- src/feature/nodelist/dirlist.c | 33 +- src/feature/nodelist/dirlist.h | 4 +- src/feature/nodelist/document_signature_st.h | 2 +- src/feature/nodelist/extrainfo_st.h | 2 +- src/feature/nodelist/fmt_routerstatus.c | 46 +- src/feature/nodelist/microdesc.c | 48 +- src/feature/nodelist/microdesc_st.h | 9 +- src/feature/nodelist/networkstatus.c | 296 +- src/feature/nodelist/networkstatus.h | 16 +- src/feature/nodelist/networkstatus_sr_info_st.h | 2 +- src/feature/nodelist/networkstatus_st.h | 5 +- src/feature/nodelist/networkstatus_voter_info_st.h | 2 +- src/feature/nodelist/nickname.h | 2 +- src/feature/nodelist/node_select.c | 75 +- src/feature/nodelist/node_select.h | 4 +- src/feature/nodelist/node_st.h | 2 +- src/feature/nodelist/nodefamily.c | 416 + src/feature/nodelist/nodefamily.h | 50 + src/feature/nodelist/nodefamily_st.h | 48 + src/feature/nodelist/nodelist.c | 301 +- src/feature/nodelist/nodelist.h | 21 +- src/feature/nodelist/routerinfo.h | 4 +- src/feature/nodelist/routerinfo_st.h | 2 +- src/feature/nodelist/routerlist.c | 27 +- src/feature/nodelist/routerlist.h | 9 +- src/feature/nodelist/routerlist_st.h | 2 +- src/feature/nodelist/routerset.c | 116 +- src/feature/nodelist/routerset.h | 3 + src/feature/nodelist/routerstatus_st.h | 4 +- src/feature/nodelist/signed_descriptor_st.h | 2 +- src/feature/nodelist/torcert.c | 6 +- src/feature/nodelist/torcert.h | 2 +- src/feature/nodelist/vote_routerstatus_st.h | 2 +- src/feature/relay/dns.c | 93 +- src/feature/relay/dns.h | 5 + src/feature/relay/ext_orport.c | 5 +- src/feature/relay/onion_queue.c | 10 +- src/feature/relay/onion_queue.h | 2 +- src/feature/relay/relay_periodic.c | 308 + src/feature/relay/relay_periodic.h | 18 + src/feature/relay/relay_sys.c | 48 + src/feature/relay/relay_sys.h | 17 + src/feature/relay/router.c | 804 +- src/feature/relay/router.h | 27 +- src/feature/relay/routerkeys.c | 18 +- src/feature/relay/routerkeys.h | 4 +- src/feature/relay/selftest.c | 3 +- src/feature/relay/selftest.h | 2 +- src/feature/rend/rend_authorized_client_st.h | 2 +- .../rend/rend_encoded_v2_service_descriptor_st.h | 2 +- src/feature/rend/rend_intro_point_st.h | 2 +- src/feature/rend/rend_service_descriptor_st.h | 2 +- src/feature/rend/rendcache.c | 16 +- src/feature/rend/rendclient.c | 26 +- src/feature/rend/rendcommon.c | 25 +- src/feature/rend/rendmid.c | 14 +- src/feature/rend/rendparse.c | 17 +- src/feature/rend/rendparse.h | 2 +- src/feature/rend/rendservice.c | 38 +- src/feature/stats/geoip_stats.c | 4 +- src/feature/stats/predict_ports.h | 2 +- src/feature/stats/rephist.h | 2 +- src/include.am | 7 + src/lib/arch/bytes.h | 6 +- src/lib/arch/include.am | 1 + src/lib/buf/.may_include | 10 + src/lib/{container => buf}/buffers.c | 23 +- src/lib/{container => buf}/buffers.h | 0 src/lib/buf/include.am | 19 + src/lib/cc/.may_include | 1 + src/lib/cc/compat_compiler.h | 18 +- src/lib/cc/ctassert.h | 53 + src/lib/cc/include.am | 2 + src/lib/cc/torint.h | 17 +- src/lib/compress/.may_include | 2 + src/lib/compress/compress.c | 21 +- src/lib/compress/compress.h | 2 +- src/lib/compress/compress_buf.c | 2 +- src/lib/compress/compress_lzma.c | 4 +- src/lib/compress/compress_sys.h | 14 + src/lib/compress/compress_zstd.c | 22 +- src/lib/compress/include.am | 3 + src/lib/conf/.may_include | 3 + src/lib/conf/confmacros.h | 67 + src/lib/conf/conftesting.h | 86 + src/lib/conf/conftypes.h | 202 + src/lib/conf/include.am | 6 + src/lib/confmgt/.may_include | 11 + src/lib/confmgt/confparse.c | 1239 +++ src/lib/confmgt/confparse.h | 212 + src/lib/confmgt/include.am | 27 + src/lib/confmgt/structvar.c | 221 + src/lib/confmgt/structvar.h | 54 + src/lib/confmgt/type_defs.c | 791 ++ src/lib/confmgt/type_defs.h | 17 + src/lib/confmgt/typedvar.c | 228 + src/lib/confmgt/typedvar.h | 38 + src/lib/confmgt/unitparse.c | 206 + src/lib/confmgt/unitparse.h | 34 + src/lib/confmgt/var_type_def_st.h | 170 + src/lib/container/.may_include | 9 +- src/lib/container/bitarray.h | 2 +- src/lib/container/bloomfilt.c | 2 +- src/lib/container/include.am | 7 +- src/lib/container/map.c | 2 +- src/lib/container/map.h | 4 +- src/lib/container/namemap.c | 184 + src/lib/container/namemap.h | 35 + src/lib/container/namemap_st.h | 34 + src/lib/container/order.h | 2 +- src/lib/container/smartlist.c | 10 +- src/lib/container/smartlist.h | 11 +- src/lib/crypt_ops/.may_include | 5 +- src/lib/crypt_ops/aes_openssl.c | 2 +- src/lib/crypt_ops/compat_openssl.h | 2 +- src/lib/crypt_ops/crypto_cipher.h | 2 +- src/lib/crypt_ops/crypto_curve25519.h | 4 +- src/lib/crypt_ops/crypto_dh_openssl.c | 14 +- src/lib/crypt_ops/crypto_digest.c | 705 +- src/lib/crypt_ops/crypto_digest.h | 2 + src/lib/crypt_ops/crypto_digest_nss.c | 559 ++ src/lib/crypt_ops/crypto_digest_openssl.c | 522 ++ src/lib/crypt_ops/crypto_ed25519.c | 2 +- src/lib/crypt_ops/crypto_format.c | 90 +- src/lib/crypt_ops/crypto_format.h | 12 +- src/lib/crypt_ops/crypto_hkdf.c | 10 +- src/lib/crypt_ops/crypto_init.c | 64 +- src/lib/crypt_ops/crypto_init.h | 2 +- src/lib/crypt_ops/crypto_nss_mgt.h | 4 +- src/lib/crypt_ops/crypto_ope.c | 4 +- src/lib/crypt_ops/crypto_ope.h | 4 +- src/lib/crypt_ops/crypto_openssl_mgt.c | 8 +- src/lib/crypt_ops/crypto_openssl_mgt.h | 2 +- src/lib/crypt_ops/crypto_rand.c | 129 +- src/lib/crypt_ops/crypto_rand.h | 58 + src/lib/crypt_ops/crypto_rand_fast.c | 439 ++ src/lib/crypt_ops/crypto_rand_numeric.c | 194 + src/lib/crypt_ops/crypto_rsa.c | 2 +- src/lib/crypt_ops/crypto_rsa.h | 8 +- src/lib/crypt_ops/crypto_rsa_nss.c | 2 +- src/lib/crypt_ops/crypto_rsa_openssl.c | 4 +- src/lib/crypt_ops/crypto_s2k.c | 6 +- src/lib/crypt_ops/crypto_sys.h | 14 + src/lib/crypt_ops/crypto_util.c | 2 +- src/lib/crypt_ops/digestset.c | 2 +- src/lib/crypt_ops/digestset.h | 2 +- src/lib/crypt_ops/include.am | 7 + src/lib/ctime/include.am | 2 + src/lib/defs/dh_sizes.h | 2 +- src/lib/defs/digest_sizes.h | 2 +- src/lib/defs/include.am | 3 + src/lib/defs/logging_types.h | 23 + src/lib/defs/time.h | 23 + src/lib/defs/x25519_sizes.h | 2 +- src/lib/dispatch/.may_include | 11 + src/lib/dispatch/dispatch.h | 114 + src/lib/dispatch/dispatch_cfg.c | 141 + src/lib/dispatch/dispatch_cfg.h | 45 + src/lib/dispatch/dispatch_cfg_st.h | 25 + src/lib/dispatch/dispatch_core.c | 260 + src/lib/dispatch/dispatch_naming.c | 63 + src/lib/dispatch/dispatch_naming.h | 46 + src/lib/dispatch/dispatch_new.c | 176 + src/lib/dispatch/dispatch_st.h | 108 + src/lib/dispatch/include.am | 27 + src/lib/dispatch/msgtypes.h | 80 + src/lib/encoding/.may_include | 1 + src/lib/encoding/binascii.c | 22 +- src/lib/encoding/binascii.h | 3 +- src/lib/encoding/confline.c | 15 +- src/lib/encoding/confline.h | 4 +- src/lib/encoding/include.am | 6 + src/lib/encoding/keyval.h | 2 +- src/lib/encoding/kvline.c | 289 + src/lib/encoding/kvline.h | 26 + src/lib/encoding/pem.h | 2 +- src/lib/encoding/qstring.c | 90 + src/lib/encoding/qstring.h | 18 + src/lib/encoding/time_fmt.h | 2 +- src/lib/err/.may_include | 3 + src/lib/err/backtrace.c | 82 +- src/lib/err/backtrace.h | 7 +- src/lib/err/include.am | 10 +- src/lib/err/torerr.c | 50 +- src/lib/err/torerr.h | 9 +- src/lib/err/torerr_sys.c | 43 + src/lib/err/torerr_sys.h | 14 + src/lib/evloop/.may_include | 5 +- src/lib/evloop/evloop_sys.c | 49 + src/lib/evloop/evloop_sys.h | 17 + src/lib/evloop/include.am | 5 +- src/lib/evloop/procmon.c | 2 +- src/lib/evloop/timers.c | 3 +- src/lib/evloop/token_bucket.c | 52 + src/lib/evloop/token_bucket.h | 33 +- src/lib/evloop/workqueue.c | 18 +- src/lib/evloop/workqueue.h | 1 - src/lib/fdio/fdio.c | 4 + src/lib/fdio/include.am | 2 + src/lib/fs/.may_include | 2 +- src/lib/fs/conffile.h | 2 +- src/lib/fs/dir.c | 4 +- src/lib/fs/dir.h | 2 +- src/lib/fs/files.h | 14 +- src/lib/fs/include.am | 2 + src/lib/fs/lockfile.h | 2 +- src/lib/fs/mmap.c | 2 +- src/lib/fs/mmap.h | 2 +- src/lib/fs/path.c | 10 +- src/lib/fs/path.h | 2 +- src/lib/fs/userdb.h | 4 +- src/lib/fs/winlib.h | 4 +- src/lib/geoip/country.h | 2 +- src/lib/geoip/include.am | 2 + src/lib/intmath/addsub.h | 2 +- src/lib/intmath/cmp.h | 3 + src/lib/intmath/include.am | 2 + src/lib/intmath/logic.h | 2 +- src/lib/intmath/weakrng.h | 2 +- src/lib/lock/compat_mutex.c | 10 +- src/lib/lock/compat_mutex.h | 2 +- src/lib/lock/compat_mutex_pthreads.c | 16 +- src/lib/lock/include.am | 2 + src/lib/log/.may_include | 5 +- src/lib/log/escape.h | 2 +- src/lib/log/include.am | 12 +- src/lib/log/log.c | 119 +- src/lib/log/log.h | 128 +- src/lib/log/log_sys.c | 37 + src/lib/log/log_sys.h | 14 + src/lib/log/ratelim.h | 2 +- src/lib/log/util_bug.c | 72 +- src/lib/log/util_bug.h | 59 +- src/lib/log/win32err.c | 2 +- src/lib/log/win32err.h | 2 +- src/lib/malloc/.may_include | 2 +- src/lib/malloc/include.am | 8 +- src/lib/malloc/malloc.h | 4 +- src/lib/malloc/map_anon.c | 271 + src/lib/malloc/map_anon.h | 71 + src/lib/math/.may_include | 2 + src/lib/math/fp.c | 22 +- src/lib/math/fp.h | 3 +- src/lib/math/include.am | 9 +- src/lib/math/laplace.h | 2 +- src/lib/math/prob_distr.c | 1688 +++++ src/lib/math/prob_distr.h | 253 + src/lib/memarea/.may_include | 2 +- src/lib/memarea/include.am | 2 + src/lib/memarea/memarea.c | 7 +- src/lib/meminfo/include.am | 2 + src/lib/meminfo/meminfo.c | 2 +- src/lib/meminfo/meminfo.h | 2 +- src/lib/net/.may_include | 6 +- src/lib/net/address.c | 132 +- src/lib/net/alertsock.h | 2 +- src/lib/net/buffers_net.c | 136 +- src/lib/net/buffers_net.h | 9 +- src/lib/net/gethostname.h | 2 +- src/lib/net/inaddr.c | 8 +- src/lib/net/inaddr.h | 2 +- src/lib/net/inaddr_st.h | 2 +- src/lib/net/include.am | 4 + src/lib/net/nettypes.h | 4 +- src/lib/net/network_sys.c | 46 + src/lib/net/network_sys.h | 14 + src/lib/net/resolve.c | 357 +- src/lib/net/resolve.h | 19 +- src/lib/net/socket.c | 43 +- src/lib/net/socket.h | 5 +- src/lib/net/socketpair.c | 11 +- src/lib/net/socketpair.h | 2 +- src/lib/net/socks5_status.h | 2 +- src/lib/osinfo/include.am | 2 + src/lib/osinfo/uname.c | 2 +- src/lib/osinfo/uname.h | 2 +- src/lib/process/.may_include | 7 +- src/lib/process/daemon.c | 2 +- src/lib/process/daemon.h | 2 +- src/lib/process/env.c | 2 +- src/lib/process/env.h | 2 +- src/lib/process/include.am | 18 +- src/lib/process/pidfile.h | 2 +- src/lib/process/process.c | 797 ++ src/lib/process/process.h | 145 + src/lib/process/process_sys.c | 33 + src/lib/process/process_sys.h | 14 + src/lib/process/process_unix.c | 698 ++ src/lib/process/process_unix.h | 68 + src/lib/process/process_win32.c | 1105 +++ src/lib/process/process_win32.h | 97 + src/lib/process/restrict.c | 4 +- src/lib/process/setuid.c | 10 +- src/lib/process/setuid.h | 2 +- src/lib/process/subprocess.c | 1236 --- src/lib/process/subprocess.h | 134 - src/lib/process/waitpid.c | 2 +- src/lib/process/winprocess_sys.c | 66 + src/lib/process/winprocess_sys.h | 14 + src/lib/pubsub/.may_include | 10 + src/lib/pubsub/include.am | 28 + src/lib/pubsub/pub_binding_st.h | 38 + src/lib/pubsub/pubsub.h | 89 + src/lib/pubsub/pubsub_build.c | 307 + src/lib/pubsub/pubsub_build.h | 92 + src/lib/pubsub/pubsub_builder_st.h | 161 + src/lib/pubsub/pubsub_check.c | 412 + src/lib/pubsub/pubsub_connect.h | 54 + src/lib/pubsub/pubsub_flags.h | 32 + src/lib/pubsub/pubsub_macros.h | 373 + src/lib/pubsub/pubsub_publish.c | 72 + src/lib/pubsub/pubsub_publish.h | 15 + src/lib/sandbox/.may_include | 7 +- src/lib/sandbox/include.am | 2 + src/lib/sandbox/sandbox.c | 23 +- src/lib/sandbox/sandbox.h | 2 +- src/lib/smartlist_core/.may_include | 2 +- src/lib/smartlist_core/include.am | 2 + src/lib/smartlist_core/smartlist_core.c | 26 + src/lib/smartlist_core/smartlist_core.h | 5 +- src/lib/smartlist_core/smartlist_foreach.h | 13 + src/lib/smartlist_core/smartlist_split.h | 2 +- src/lib/string/.may_include | 4 +- src/lib/string/compat_string.c | 4 +- src/lib/string/compat_string.h | 11 +- src/lib/string/include.am | 2 + src/lib/string/parse_int.h | 2 +- src/lib/string/printf.c | 8 +- src/lib/string/printf.h | 2 +- src/lib/string/scanf.h | 2 +- src/lib/string/util_string.c | 37 +- src/lib/string/util_string.h | 7 +- src/lib/subsys/.may_include | 1 + src/lib/subsys/include.am | 4 + src/lib/subsys/subsys.h | 95 + src/lib/term/.may_include | 3 +- src/lib/term/getpass.c | 2 +- src/lib/term/getpass.h | 2 +- src/lib/term/include.am | 2 + src/lib/testsupport/include.am | 1 + src/lib/testsupport/testsupport.h | 4 +- src/lib/thread/.may_include | 1 + src/lib/thread/compat_threads.c | 28 +- src/lib/thread/include.am | 7 +- src/lib/thread/numcpus.h | 2 +- src/lib/thread/thread_sys.h | 14 + src/lib/thread/threads.h | 16 +- src/lib/time/.may_include | 2 + src/lib/time/compat_time.c | 28 +- src/lib/time/compat_time.h | 150 +- src/lib/time/include.am | 4 + src/lib/time/time_sys.c | 28 + src/lib/time/time_sys.h | 14 + src/lib/time/tvdiff.c | 3 +- src/lib/time/tvdiff.h | 2 +- src/lib/tls/.may_include | 7 +- src/lib/tls/buffers_tls.c | 2 +- src/lib/tls/include.am | 3 + src/lib/tls/nss_countbytes.h | 2 +- src/lib/tls/tortls.c | 14 + src/lib/tls/tortls.h | 10 +- src/lib/tls/tortls_internal.h | 6 +- src/lib/tls/tortls_openssl.c | 18 +- src/lib/tls/tortls_st.h | 4 +- src/lib/tls/tortls_sys.h | 14 + src/lib/tls/x509.h | 6 +- src/lib/tls/x509_internal.h | 2 +- src/lib/tls/x509_nss.c | 8 +- src/lib/tls/x509_openssl.c | 4 +- src/lib/trace/debug.h | 2 +- src/lib/trace/events.h | 6 +- src/lib/trace/include.am | 3 +- src/lib/trace/trace.h | 2 +- src/lib/version/.may_include | 3 + src/lib/{log => version}/git_revision.c | 2 +- src/lib/{log => version}/git_revision.h | 0 src/lib/version/include.am | 27 + src/lib/version/torversion.h | 12 + src/lib/version/version.c | 50 + src/lib/wallclock/.may_include | 1 + src/lib/wallclock/approx_time.c | 18 + src/lib/wallclock/approx_time.h | 2 +- src/lib/wallclock/include.am | 5 +- src/lib/wallclock/time_to_tm.h | 2 +- src/lib/wallclock/timeval.h | 23 +- src/lib/wallclock/tor_gettimeofday.h | 2 +- src/lib/wallclock/wallclock_sys.h | 14 + src/rust/build.rs | 4 +- src/rust/protover/ffi.rs | 2 + src/rust/protover/protover.rs | 12 +- src/rust/tor_log/tor_log.rs | 8 +- src/rust/tor_util/strings.rs | 6 +- src/test/Makefile.nmake | 8 +- src/test/bench.c | 119 +- src/test/conf_examples/badnick_1/error | 1 + src/test/conf_examples/badnick_1/torrc | 2 + src/test/conf_examples/badnick_2/error | 1 + src/test/conf_examples/badnick_2/torrc | 2 + src/test/conf_examples/contactinfo_notutf8/error | 1 + src/test/conf_examples/contactinfo_notutf8/torrc | 1 + src/test/conf_examples/example_1/expected | 2 + src/test/conf_examples/example_1/torrc | 5 + src/test/conf_examples/example_2/error | 1 + src/test/conf_examples/example_2/torrc | 1 + src/test/conf_examples/example_3/cmdline | 1 + src/test/conf_examples/example_3/expected | 1 + src/test/conf_examples/example_3/torrc | 0 src/test/conf_examples/include_1/expected | 3 + src/test/conf_examples/include_1/included.inc | 4 + src/test/conf_examples/include_1/nested.inc | 2 + src/test/conf_examples/include_1/torrc | 4 + src/test/conf_examples/include_bug_31408/expected | 2 + .../include_bug_31408/included/01_nickname.inc | 1 + .../include_bug_31408/included/02_no_configs.inc | 3 + src/test/conf_examples/include_bug_31408/torrc | 2 + src/test/conf_examples/large_1/expected | 159 + src/test/conf_examples/large_1/torrc | 167 + src/test/conf_examples/obsolete_1/expected | 0 src/test/conf_examples/obsolete_1/torrc | 68 + src/test/conf_examples/obsolete_2/expected | 0 src/test/conf_examples/obsolete_2/torrc | 2 + src/test/conf_examples/ops_1/cmdline | 1 + src/test/conf_examples/ops_1/expected | 2 + src/test/conf_examples/ops_1/torrc | 3 + src/test/conf_examples/ops_2/cmdline | 1 + src/test/conf_examples/ops_2/expected | 0 src/test/conf_examples/ops_2/torrc | 3 + src/test/conf_examples/ops_3/cmdline | 1 + src/test/conf_examples/ops_3/expected | 3 + src/test/conf_examples/ops_3/torrc | 3 + src/test/conf_examples/ops_4/expected | 2 + src/test/conf_examples/ops_4/torrc | 3 + src/test/conf_examples/ops_4/torrc.defaults | 1 + src/test/conf_examples/ops_5/expected | 3 + src/test/conf_examples/ops_5/torrc | 3 + src/test/conf_examples/ops_5/torrc.defaults | 1 + src/test/conf_examples/ops_6/expected | 0 src/test/conf_examples/ops_6/torrc | 3 + src/test/conf_examples/ops_6/torrc.defaults | 1 + src/test/conf_examples/relpath_rad/error | 1 + src/test/conf_examples/relpath_rad/torrc | 4 + src/test/fuzz/fixup_filenames.sh | 6 +- src/test/fuzz/fuzz_consensus.c | 6 +- src/test/fuzz/fuzz_diff.c | 32 +- src/test/fuzz/fuzz_diff_apply.c | 13 +- src/test/fuzz/fuzz_hsdescv3.c | 11 +- src/test/fuzz/fuzz_http.c | 2 +- src/test/fuzz/fuzz_http_connect.c | 2 +- src/test/fuzz/fuzz_multi.sh | 6 +- src/test/fuzz/fuzz_socks.c | 2 +- src/test/fuzz/fuzz_strops.c | 253 + src/test/fuzz/fuzz_vrs.c | 24 +- src/test/fuzz/fuzzing.h | 2 +- src/test/fuzz/fuzzing_common.c | 21 +- src/test/fuzz/include.am | 29 + src/test/fuzz/minimize.sh | 2 +- src/test/fuzz_static_testcases.sh | 2 +- src/test/hs_test_helpers.c | 86 +- src/test/include.am | 68 +- src/test/ope_ref.py | 2 +- src/test/prob_distr_mpfr_ref.c | 64 + src/test/ptr_helpers.c | 50 + src/test/ptr_helpers.h | 23 + src/test/resolve_test_helpers.c | 85 + src/test/resolve_test_helpers.h | 18 + src/test/rng_test_helpers.c | 259 + src/test/rng_test_helpers.h | 25 + src/test/test-child.c | 61 - src/test/test-memwipe.c | 2 +- src/test/test-network.sh | 48 +- src/test/test-process.c | 85 + src/test/test.c | 62 +- src/test/test.h | 54 +- src/test/test_addr.c | 660 +- src/test/test_address.c | 166 + src/test/test_address_set.c | 15 +- src/test/test_bt.sh | 2 - src/test/test_bt_cl.c | 10 +- src/test/test_btrack.c | 129 + src/test/test_buffers.c | 2 +- src/test/test_bwmgt.c | 209 +- src/test/test_channel.c | 6 +- src/test/test_channelpadding.c | 9 +- src/test/test_channeltls.c | 2 +- src/test/test_circuitbuild.c | 7 +- src/test/test_circuitpadding.c | 3205 ++++++++ src/test/test_circuitstats.c | 18 +- src/test/test_cmdline.sh | 48 + src/test/test_compat_libevent.c | 3 - src/test/test_config.c | 265 +- src/test/test_confmgr.c | 325 + src/test/test_confparse.c | 1086 +++ src/test/test_connection.h | 4 + src/test/test_consdiff.c | 94 +- src/test/test_consdiffmgr.c | 41 +- src/test/test_containers.c | 90 + src/test/test_controller.c | 322 +- src/test/test_controller_events.c | 218 +- src/test/test_crypto.c | 209 +- src/test/test_crypto_rng.c | 332 + src/test/test_crypto_slow.c | 2 +- src/test/test_dir.c | 1461 +++- src/test/test_dir_common.c | 17 +- src/test/test_dir_common.h | 4 + src/test/test_dir_handle_get.c | 127 +- src/test/test_dispatch.c | 278 + src/test/test_dns.c | 66 + src/test/test_dos.c | 2 +- src/test/test_entryconn.c | 2 +- src/test/test_entrynodes.c | 67 +- src/test/test_extorport.c | 35 +- src/test/test_helpers.c | 64 +- src/test/test_helpers.h | 6 + src/test/test_hs.c | 16 +- src/test/test_hs_cache.c | 30 +- src/test/test_hs_cell.c | 100 +- src/test/test_hs_client.c | 135 +- src/test/test_hs_common.c | 9 +- src/test/test_hs_config.c | 117 +- src/test/test_hs_control.c | 7 +- src/test/test_hs_descriptor.c | 132 +- src/test/test_hs_dos.c | 176 + src/test/test_hs_intropoint.c | 226 +- src/test/test_hs_service.c | 169 +- src/test/test_introduce.c | 3 +- src/test/test_key_expiration.sh | 14 +- src/test/test_keygen.sh | 46 +- src/test/test_link_handshake.c | 8 +- src/test/test_logging.c | 26 +- src/test/test_mainloop.c | 229 +- src/test/test_microdesc.c | 169 +- src/test/test_namemap.c | 174 + src/test/test_netinfo.c | 48 + src/test/test_nodelist.c | 1030 ++- src/test/test_oom.c | 2 +- src/test/test_options.c | 69 +- src/test/test_parsecommon.c | 594 ++ src/test/test_parseconf.sh | 204 + src/test/test_periodic_event.c | 102 +- src/test/test_policy.c | 285 + src/test/test_prob_distr.c | 1402 ++++ src/test/test_process.c | 669 ++ src/test/test_process_descs.c | 67 + src/test/test_process_slow.c | 365 + src/test/test_proto_http.c | 2 +- src/test/test_proto_misc.c | 2 +- src/test/test_protover.c | 10 +- src/test/test_pt.c | 129 +- src/test/test_ptr_slow.c | 106 + src/test/test_pubsub_build.c | 578 ++ src/test/test_pubsub_msg.c | 305 + src/test/test_rebind.py | 5 +- src/test/test_rebind.sh | 13 +- src/test/test_relaycell.c | 7 +- src/test/test_relaycrypt.c | 10 +- src/test/test_rng.c | 59 + src/test/test_router.c | 255 + src/test/test_routerkeys.c | 12 +- src/test/test_routerlist.c | 24 +- src/test/test_routerset.c | 8 +- src/test/test_rust.sh | 5 +- src/test/test_sendme.c | 365 + src/test/test_shared_random.c | 378 +- src/test/test_slow.c | 4 +- src/test/test_socks.c | 2 +- src/test/test_status.c | 24 +- src/test/test_switch_id.c | 2 +- src/test/test_switch_id.sh | 4 +- src/test/test_token_bucket.c | 152 + src/test/test_tortls.c | 6 +- src/test/test_tortls.h | 2 +- src/test/test_tortls_openssl.c | 4 +- src/test/test_util.c | 534 +- src/test/test_util_format.c | 10 +- src/test/test_util_slow.c | 396 - src/test/test_voting_flags.c | 191 + src/test/test_workqueue.c | 2 +- src/test/test_workqueue_cancel.sh | 2 +- src/test/test_workqueue_efd.sh | 2 +- src/test/test_workqueue_efd2.sh | 2 +- src/test/test_workqueue_pipe.sh | 2 +- src/test/test_workqueue_pipe2.sh | 2 +- src/test/test_workqueue_socketpair.sh | 2 +- src/test/testing_common.c | 29 +- src/test/testing_rsakeys.c | 5 +- src/test/zero_length_keys.sh | 6 +- src/tools/include.am | 7 +- src/tools/tor-gencert.c | 2 +- src/tools/tor-print-ed-signing-cert.c | 7 + src/tools/tor-resolve.c | 394 +- src/trunnel/channelpadding_negotiation.c | 2 +- src/trunnel/channelpadding_negotiation.h | 2 +- src/trunnel/circpad_negotiation.c | 549 ++ src/trunnel/circpad_negotiation.h | 195 + src/trunnel/circpad_negotiation.trunnel | 44 + src/trunnel/ed25519_cert.c | 2 +- src/trunnel/ed25519_cert.h | 2 +- src/trunnel/ed25519_cert.trunnel | 6 - src/trunnel/hs/cell_common.c | 118 +- src/trunnel/hs/cell_common.h | 100 +- src/trunnel/hs/cell_common.trunnel | 4 +- src/trunnel/hs/cell_establish_intro.c | 471 +- src/trunnel/hs/cell_establish_intro.h | 161 +- src/trunnel/hs/cell_establish_intro.trunnel | 23 + src/trunnel/hs/cell_introduce1.c | 2 +- src/trunnel/hs/cell_introduce1.h | 2 +- src/trunnel/hs/cell_rendezvous.c | 2 +- src/trunnel/hs/cell_rendezvous.h | 2 +- src/trunnel/include.am | 14 +- src/trunnel/link_handshake.c | 2 +- src/trunnel/link_handshake.h | 2 +- src/trunnel/netinfo.c | 723 ++ src/trunnel/netinfo.h | 226 + src/trunnel/netinfo.trunnel | 24 + src/trunnel/pwbox.c | 2 +- src/trunnel/pwbox.h | 2 +- src/trunnel/sendme_cell.c | 347 + src/trunnel/sendme_cell.h | 101 + src/trunnel/sendme_cell.trunnel | 19 + src/trunnel/socks5.c | 15 +- src/trunnel/socks5.h | 2 +- src/trunnel/socks5.trunnel | 2 +- src/trunnel/trunnel-local.h | 1 + src/win32/orconfig.h | 2 +- 1184 files changed, 76312 insertions(+), 24550 deletions(-)