Age | Commit message (Collapse) | Author |
|
This makes it so main.c, and the rest of src/or, no longer need to
include any openssl headers.
|
|
|
|
|
|
|
|
|
|
|
|
The old implementation had duplicated code in a bunch of places, and
it interspersed spool-management with resource management. The new
implementation should make it easier to add new resource types and
maintain the spooling code.
Closing ticket 21651.
|
|
|
|
When calculating max sampled size, Tor would only count the number of
bridges in torrc, without considering that our state file might already
have sampled bridges in it. This caused problems when people swap
bridges, since the following error would trigger:
[warn] Not expanding the guard sample any further; just hit the
maximum sample threshold of 1
|
|
Leak caused by clean_up_backtrace_handler not being called
on shutdown.
|
|
|
|
This patch changes the way we decide when to check for whether it's time
to rotate and/or expiry our onion keys. Due to proposal #274 we can now
have the keys rotate at different frequencies than before and we thus
do the check once an hour when our Tor daemon is running in server mode.
This should allow us to quickly notice if the network consensus
parameter have changed while we are running instead of having to wait
until the current parameters timeout value have passed.
See: See: https://bugs.torproject.org/21641
|
|
This patch adds a new timer that is executed when it is time to expire
our current set of old onion keys. Because of proposal #274 this can no
longer be assumed to be at the same time we rotate our onion keys since
they will be updated less frequently.
See: https://bugs.torproject.org/21641
|
|
This patch adds an API to get the current grace period, in days, defined
as the consensus parameter "onion-key-grace-period-days".
As per proposal #274 the values for "onion-key-grace-period-days" is a
default value of 7 days, a minimum value of 1 day, and a maximum value
defined by other consensus parameter "onion-key-rotation-days" also
defined in days.
See: https://bugs.torproject.org/21641
|
|
This patch turns `MIN_ONION_KEY_LIFETIME` into a new function
`get_onion_key_lifetime()` which gets its value from a network consensus
parameter named "onion-key-rotation-days". This allows us to tune the
value at a later point in time with no code modifications.
We also bump the default onion key lifetime from 7 to 28 days as per
proposal #274.
See: https://bugs.torproject.org/21641
|
|
Thanks, jenkins!
|
|
|
|
|
|
There was a frequent block of code that did "find the next router
line, see if we've hit the end of the list, get the ID hash from the
line, and enforce well-ordering." Per Ahf's review, I'm extracting
it to its own function.
|
|
|
|
|
|
|
|
|
|
Previously, we operated on smartlists of NUL-terminated strings,
which required us to copy both inputs to produce the NUL-terminated
strings. Then we copied parts of _those_ inputs to produce an
output smartlist of NUL-terminated strings. And finally, we
concatenated everything into a final resulting string.
This implementation, instead, uses a pointer-and-extent pattern to
represent each line as a pointer into the original inputs and a
length. These line objects are then added by reference into the
output. No actual bytes are copied from the original strings until
we finally concatenate the final result together.
Bookkeeping structures and newly allocated strings (like ed
commands) are allocated inside a memarea, to avoid needless mallocs
or complicated should-I-free-this-or-not bookkeeping.
In my measurements, this improves CPU performance by something like
18%. The memory savings should be much, much higher.
|
|
Now we use a single allocation block for all the lines, rather than
calling strdup on them one at a time. This should help performance
a tiny bit.
|
|
|
|
Found while fuzzing: this could occur if we tried to copy a
nonexistent "line 0" while applying a diff.
|
|
(We'll want this for fuzzing)
|
|
Also, add very strict split/join functions, and totally forbid
nonempty files that end with somethig besides a newline. This
change is necessary to ensure that diff/apply are actually reliable
inverse operations.
|
|
Don't alias the insides of smartlist_t; that way lies madness.
|
|
|
|
This is a protocol update from recent prop140 changes.
Also, per #21673, we need to check the entire document, including
signatures.
|
|
Also add a missing newline.
|
|
|
|
|
|
The 2-line diff changs is needed to make the unit tests actually
test the cases that they thought they were testing.
The bogus free was found while testing those cases
|
|
|
|
|
|
|
|
Previously test_consdiff.c just did #include "consdiff.c", which is
not great style, and messes up coverage testing.
|
|
(This commit was extracted by nickm based on the final outcome of
the project, taking only the changes in the files touched by this
commit from the consdiff_rebased branch. The directory-system
changes are going to get worked on separately.)
|
|
|
|
|
|
|
|
Fixes bug 20059; bugfix on 0.1.0.1-rc.
|
|
|
|
|
|
Depends on 21594, part of 21622.
|
|
Depends on 21598, part of 21622.
|
|
Depends on 21594, part of 21622.
(Resolved merge conflict in static function declarations.
|