Nick Mathewson
48b08f0592
Merge branch 'ticket27359_v2_squashed'
2018-11-19 08:26:49 -05:00
Nick Mathewson
4f9548f893
Expose more nodelist.c functions to tests
2018-11-19 08:26:10 -05:00
Nick Mathewson
426c9561c5
Use nodefamily_t in microdescriptors.
...
Closes ticket 27359.
2018-11-19 08:26:10 -05:00
Nick Mathewson
83be4d2bbd
Backend for compact node-family representation.
...
This representation is meant to save memory in microdescriptors --
we can't use it in routerinfo_t yet, since those families need to be
encoded losslessly for directory voting to work.
This representation saves memory in three ways:
1. It uses only one allocation per family. (The old way used a
smartlist (2 allocs) plus one strdup per entry.)
2. It stores identity digests in binary, not hex.
3. It keeps families in a canonical format, memoizes, and
reference-counts them.
Part of #27359 .
2018-11-19 08:26:10 -05:00
Nick Mathewson
cec58ae55c
Merge branch 'maint-0.3.5'
2018-11-14 07:56:52 -05:00
Nick Mathewson
a58b19465d
Merge remote-tracking branch 'teor/bug28441-035' into maint-0.3.5
2018-11-14 07:56:48 -05:00
Nick Mathewson
586c3a7c90
Merge branch 'maint-0.3.5'
2018-11-14 07:42:56 -05:00
teor
16ca6fdfdb
log: stop talking about the Named flag in log messages
...
Clients have ignored the Named flag since 0.3.2.
Fixes bug 28441; bugfix on 0.3.2.1-alpha.
2018-11-14 18:16:34 +10:00
teor
a7aa3f76ec
comment: Fix a typo in nodes_in_same_family()
2018-11-14 18:06:05 +10:00
Nick Mathewson
674ef53a7e
Add a warning if we can't write networkstatus-bridges
...
Fixes CID 1440818.
2018-11-02 13:32:43 -04:00
Nick Mathewson
383b44553c
Merge branch 'ticket24393_036_01_squashed'
2018-10-31 11:07:15 -04:00
Nick Mathewson
988d4903a3
Merge branch 'networkstatus_mmap' into networkstatus_mmap_merge
2018-10-31 09:04:12 -04:00
Neel Chauhan
067b16eae2
Check IPv6 subnets as well as IPv4 subnets where possible when choosing client paths
2018-10-30 15:02:43 -04:00
Nick Mathewson
594140574e
Fix remaining cases of using consensus without a len parameter.
...
(Thanks to cyberpunks for noting two of them!)
2018-10-24 11:06:34 -04:00
Taylor Yu
7f6c0fce46
Merge branch 'bug27800-034' into bug27800-035
2018-10-17 16:00:11 -05:00
Nick Mathewson
df2b46d18c
Remove a double-newline and improve a comment
2018-10-14 15:33:39 -04:00
Nick Mathewson
2dccef0eb4
Merge branch 'bug27772_squashed'
2018-10-14 15:31:52 -04:00
Nick Mathewson
886dc8b0a5
Remove routerparse include from files that dont use it
2018-10-01 11:35:11 -05:00
Nick Mathewson
35db3f8162
Extract addr-policy parsing code.
2018-10-01 11:17:19 -05:00
Nick Mathewson
4201203845
extract networkstatus parsing to its own file.
2018-10-01 10:46:00 -05:00
Nick Mathewson
cd23903427
Pull detached-signatures code into dirauth.
2018-10-01 10:46:00 -05:00
Nick Mathewson
2be35f4d61
Split microdescriptor parser into its own file.
2018-10-01 10:46:00 -05:00
Nick Mathewson
430ca38f70
Split the authority-cert and signature/hash code from routerparse
2018-10-01 00:09:00 -05:00
Nick Mathewson
6785aa4010
Move routerparse and parsecommon to their own module.
2018-10-01 00:04:06 -05:00
Nick Mathewson
c8f2a6d2fe
Extract the non-stats part of geoip into a new src/lib/geoip.
2018-09-27 10:26:01 -04:00
Nick Mathewson
4f0bc0c8f5
Revise things that had included router.h before
...
Make them only include the headers that they needed, and sort their
headers while we're at it.
2018-09-25 17:57:58 -04:00
Nick Mathewson
b8df2318e9
Move routerinfo_t functions out of router.c
...
(It turns out that some of the functions in router.h didn't even
exist any more, so I just got to delete their declarations completely.)
2018-09-25 16:48:00 -04:00
Nick Mathewson
efa978124f
Extract nickname-checking functions from router.c
2018-09-25 16:22:11 -04:00
Nick Mathewson
5c86f3c297
Move the various _describe() functions out of router.c
...
Note that I haven't separated the headers yet (there's still an
2018-09-25 16:13:47 -04:00
Nick Mathewson
fcd0f76134
Extract all the "am I a server" functions from router.c
2018-09-25 16:00:50 -04:00
Nick Mathewson
70539e3d5e
Move all authdir_mode_*() functions into authmode.h
2018-09-25 15:39:24 -04:00
Nick Mathewson
9385b7ec5f
Rename dirauth/mode.h to dirauth/authmode.h
...
This is preparation for having a routermode.h as well
2018-09-25 15:18:21 -04:00
Nick Mathewson
934859cf80
Move key-loading and crosscert-checking out of feature/relay
...
This is also used by onion services, so it needs to go in another
module.
2018-09-25 15:14:57 -04:00
Nick Mathewson
194acfb51d
Split directory.c code into several modules
...
Parts of this C file naturally belong in dircache, dirclient, and
dircommon: so, move them there.
2018-09-21 12:57:22 -04:00
Nick Mathewson
9399c579e5
Merge branch 'split_mainloop_onion'
2018-09-21 09:37:23 -04:00
Nick Mathewson
96d1f2e6d0
Merge remote-tracking branch 'dgoulet/ticket27797_035_01'
2018-09-21 09:33:03 -04:00
Nick Mathewson
c7ce6b9821
Split main.c into main.c and mainloop.c
...
The main.c code is responsible for initialization and shutdown;
the mainloop.c code is responsible for running the main loop of Tor.
Splitting the "generic event loop" part of mainloop.c from the
event-loop-specific part is not done as part of this patch.
2018-09-21 09:14:06 -04:00
Nick Mathewson
63219eda8a
Put dirlist_free_all back in routerlist_free_all for unit tests
2018-09-21 08:10:39 -04:00
Nick Mathewson
b54a5e704f
Split most of dirserv.c into several new modules
...
In dirauth:
* bwauth.c reads and uses bandwidth files
* guardfraction.c reads and uses the guardfraction file
* reachability.c tests relay reachability
* recommend_pkg.c handles the recommended-packages lines.
* recv_descs.c handles fingerprint files and processing incoming
routerinfos that relays upload to us
* voteflag.c computes flag thresholds and sets those thresholds on
routerstatuses when computing votes
In control:
* fmt_serverstatus.c generates the ancient "v1 server status"
format that controllers expect.
In nodelist:
* routerstatus_fmt.c formats routerstatus entries for a consensus,
a vote, or for the controller.
2018-09-20 11:07:42 -04:00
David Goulet
e3713f17fb
node: Make node_supports_v3_rendezvous_point() also check for the key
...
It is not enough to look at protover for v3 rendezvous support but also we
need to make sure that the curve25519 onion key is present or in other words
that the descriptor has been fetched and does contain it.
Fixes #27797 .
Signed-off-by: David Goulet <dgoulet@torproject.org>
2018-09-20 08:50:27 -04:00
Nick Mathewson
08e3b88f07
Split routerlist.c into 4 separate modules
...
There are now separate modules for:
* the list of router descriptors
* the list of authorities and fallbacks
* managing authority certificates
* selecting random nodes
2018-09-19 17:08:57 -04:00
Nick Mathewson
7ace8d5a61
Assert that some trunnel _new() functions return non-NULL
...
The trunnel functions are written under the assumption that their
allocators can fail, so GCC LTO thinks they might return NULL. In
point of fact, they're using tor_malloc() and friends, which can't
fail, but GCC won't necessarily figure that out.
Fixes part of #27772 .
2018-09-18 14:43:57 -04:00
Nick Mathewson
620108ea77
Assert that we aren't returning a pointer to a local variable.
...
GCC got confused here with LTO enabled.
Fixes part of #27772 .
2018-09-18 14:34:49 -04:00
Nick Mathewson
b67f3b751a
Merge branch 'ticket27247'
2018-09-14 09:14:12 -04:00
cypherpunks
cb9fa3b04c
nodelist: fix docs for networkstatus_read_cached_consensus_impl
...
Fix on c12d2cb2dc
.
2018-09-12 14:13:03 +00:00
cypherpunks
ab91302fd0
nodelist: use strcmpstart() instead of strncmp()
...
in rend_parse_v2_service_descriptor.
Fix on c58675ca72
2018-09-12 14:03:06 +00:00
Nick Mathewson
04bb70199b
Followup: Make authority_cert_parse_from_string() take length too
2018-09-11 11:43:26 -04:00
Nick Mathewson
7e3005af30
Replace "read consensus from disk" with "map consensus from disk".
...
Implements 27244, and should save a bunch of RAM on clients.
2018-09-11 11:43:26 -04:00
Nick Mathewson
abaca3fc8c
Revise networkstatus parsing code to use lengths
...
This way the networkstatus can be parsed without being
NUL-terminated, so we can implement 27244 and mmap our consensus objects.
2018-09-11 11:43:26 -04:00
Nick Mathewson
5595b21227
Consdiff: use lengths on inputs so they don't need NUL at the end
...
This is part of #27244 , so that we can safely mmap consensus
documents.
2018-09-11 11:16:50 -04:00