aboutsummaryrefslogtreecommitdiff
path: root/src/or/hibernate.c
Commit message (Collapse)AuthorAge
* Uplift status.c unit test coverage with new test cases and macros.dana koch2014-04-15
| | | | | | | | | | | | | | | A new set of unit test cases are provided, as well as introducing an alternative paradigm and macros to support it. Primarily, each test case is given its own namespace, in order to isolate tests from each other. We do this by in the usual fashion, by appending module and submodule names to our symbols. New macros assist by reducing friction for this and other tasks, like overriding a function in the global namespace with one in the current namespace, or declaring integer variables to assist tracking how many times a mock has been called. A set of tests for a small-scale module has been included in this commit, in order to highlight how the paradigm can be used. This suite gives 100% coverage to status.c in test execution.
* Always check returns from unlink()Andrea Shepard2014-03-31
|
* Tweak/cleanup 5526 fix.Nick Mathewson2013-08-21
|
* Print accounting information in heartbeat messages.Peter Retzlaff2013-08-21
| | | | Implements ticket 5526.
* Completely refactor how FILENAME_PRIVATE worksNick Mathewson2013-07-10
| | | | | | | | | | | | | | | | | | | | We previously used FILENAME_PRIVATE identifiers mostly for identifiers exposed only to the unit tests... but also for identifiers exposed to the benchmarker, and sometimes for identifiers exposed to a similar module, and occasionally for no really good reason at all. Now, we use FILENAME_PRIVATE identifiers for identifiers shared by Tor and the unit tests. They should be defined static when we aren't building the unit test, and globally visible otherwise. (The STATIC macro will keep us honest here.) For identifiers used only by the unit tests and never by Tor at all, on the other hand, we wrap them in #ifdef TOR_UNIT_TESTS. This is not the motivating use case for the split test/non-test build system; it's just a test example to see how it works, and to take a chance to clean up the code a little.
* Remove a bunch of unused macro definitionsNick Mathewson2013-02-23
|
* Update the copyright date to 201.Nick Mathewson2013-01-16
|
* In comments and logs, say "UTC" not "GMT"Nick Mathewson2012-11-23
| | | | | | | Fix for #6113. Note that the RFC1123 times we generate still all say 'GMT'. I'm going to suggest this is not worth changing.
* Call channel_mark_for_close() properly in hibernate_go_dormant()Andrea Shepard2012-11-13
|
* Split the or_state_t portions of config.c into their own fileNick Mathewson2012-09-13
|
* Update copyright dates to 2012; add a few missing copyright statementsNick Mathewson2012-06-04
|
* Add about 60 more DOCDOC comments to 0.2.3Nick Mathewson2012-06-04
| | | | | | | | Also, try to resolve some doxygen issues. First, define a magic "This is doxygen!" macro so that we take the correct branch in various #if/#else/#endifs in order to get the right documentation. Second, add in a few grouping @{ and @} entries in order to get some variables and fields to get grouped together.
* Rename nonconformant identifiers.Nick Mathewson2012-01-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes bug 4893. These changes are pure mechanical, and were generated with this perl script: /usr/bin/perl -w -i.bak -p s/crypto_pk_env_t/crypto_pk_t/g; s/crypto_dh_env_t/crypto_dh_t/g; s/crypto_cipher_env_t/crypto_cipher_t/g; s/crypto_digest_env_t/crypto_digest_t/g; s/aes_free_cipher/aes_cipher_free/g; s/crypto_free_cipher_env/crypto_cipher_free/g; s/crypto_free_digest_env/crypto_digest_free/g; s/crypto_free_pk_env/crypto_pk_free/g; s/_crypto_dh_env_get_dh/_crypto_dh_get_dh/g; s/_crypto_new_pk_env_rsa/_crypto_new_pk_from_rsa/g; s/_crypto_pk_env_get_evp_pkey/_crypto_pk_get_evp_pkey/g; s/_crypto_pk_env_get_rsa/_crypto_pk_get_rsa/g; s/crypto_new_cipher_env/crypto_cipher_new/g; s/crypto_new_digest_env/crypto_digest_new/g; s/crypto_new_digest256_env/crypto_digest256_new/g; s/crypto_new_pk_env/crypto_pk_new/g; s/crypto_create_crypto_env/crypto_cipher_new/g; s/connection_create_listener/connection_listener_new/g; s/smartlist_create/smartlist_new/g; s/transport_create/transport_new/g;
* Convert instances of tor_malloc+tor_snprintf into tor_asprintfNick Mathewson2012-01-16
| | | | | | | | | | These were found by looking for tor_snprintf() instances that were preceeded closely by tor_malloc(), though I probably converted some more snprintfs as well. (In every case, make sure that the length variable (if any) is removed, renamed, or lowered, so that anything else that might have assumed a longer buffer doesn't exist.)
* Advertise dirport if accountingmax is large enoughSebastian Hahn2012-01-10
| | | | | | When we have an effective bandwidthrate configured so that we cannot exceed our bandwidth limit in one accounting interval, don't disable advertising the dirport. Implements ticket 2434.
* New 'DisableNetwork' option to prevent Tor from using the networkNick Mathewson2011-11-28
| | | | | | | | | | | | | | | | | | Some controllers want this so they can mess with Tor's configuration for a while via the control port before actually letting Tor out of the house. We do this with a new DisableNetwork option, that prevents Tor from making any outbound connections or binding any non-control listeners. Additionally, it shuts down the same functionality as shuts down when we are hibernating, plus the code that launches directory downloads. To make sure I didn't miss anything, I added a clause straight to connection_connect, so that we won't even try to open an outbound socket when the network is disabled. In my testing, I made this an assert, but since I probably missed something, I've turned it into a BUG warning for testing.
* Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson2011-10-28
|\
| * Fix typo, spotted by tmpname0901. Thanks!Sebastian Hahn2011-10-28
| |
* | Fix a bunch of whitespace errorsNick Mathewson2011-10-11
| |
* | Merge remote-tracking branch 'public/bug2003_nm'Nick Mathewson2011-10-07
|\ \
| * | Make the unit tests pass again after the bug2003 fixNick Mathewson2011-09-07
| | |
| * | Don't update AccountingSoftLimitHitAt on startupSebastian Hahn2011-09-01
| |/ | | | | | | | | | | Add a "default" state which we use until we've decided whether we're live or hibernating. This allows us to properly track whether we're resuming a hibernation period or not. Fixes bug 2003.
* | Move entry-only fields from edge_connection_t to entry_connection_tNick Mathewson2011-07-21
| | | | | | | | Also, refactor the code accordingly.
* | Make the get_options() return constNick Mathewson2011-06-14
|/ | | | | | | | This lets us make a lot of other stuff const, allows the compiler to generate (slightly) better code, and will make me get slightly fewer patches from folks who stick mutable stuff into or_options_t. const: because not every input is an output!
* Correctly check elapsed time in last hibernation periodSebastian Hahn2011-04-29
| | | | Fix bug 3020.
* Log more about soft-hibernationNick Mathewson2011-01-25
|
* Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson2011-01-03
|\ | | | | | | | | | | Conflicts: src/common/test.h src/or/test.c
| * Bump copyright statements to 2011Nick Mathewson2011-01-03
| |
* | Fix a bug in calculating wakeup time on 64-bit machines.Nick Mathewson2010-12-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you had TIME_MAX > INT_MAX, and your "time_to_exhaust_bw = accountingmax/expected_bandwidth_usage * 60" calculation managed to overflow INT_MAX, then your time_to_consider value could underflow and wind up being rediculously low or high. "Low" was no problem; negative values got caught by the (time_to_consider <= 0) check. "High", however, would get you a wakeup time somewhere in the distant future. The fix is to check for time_to_exhaust_bw overflowing INT_MAX, not TIME_MAX: We don't allow any accounting interval longer than a month, so if time_to_exhaust_bw is significantly larger than 31*24*60*60, we can just clip it. This is a bugfix on 0.0.9pre6, when accounting was first introduced. It fixes bug 2146, unless there are other causes there too. The fix is from boboper. (I tweaked it slightly by removing an assignment that boboper marked as dead, and lowering a variable that no longer needed to be function-scoped.)
* | Don't crash when accountingmax is set in non-server TorsNick Mathewson2010-12-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We use a hash of the identity key to seed a prng to tell when an accounting period should end. But thanks to the bug998 changes, clients no longer have server-identity keys to use as a long-term seed in accounting calculations. In any case, their identity keys (as used in TLS) were never never fixed. So we can just set the wakeup time from a random seed instead there. Still open is whether everybody should be random. This patch fixes bug 2235, which was introduced in 0.2.2.18-alpha. Diagnosed with help from boboper on irc.
* | Maintain separate server and client identity keys when appropriate.Robert Ransom2010-10-04
| | | | | | | | Fixes a bug described in ticket #988.
* | Merge branch 'bug1511'Nick Mathewson2010-09-23
|\ \
| * | Even more accurate handling for shifting accounting intervalsNick Mathewson2010-09-21
| | | | | | | | | | | | | | | | | | | | | Roger correctly pointed out that my code was broken for accounting periods that shifted forwards, since start_of_accounting_period_containing(interval_start_time) would not be equal to interval_start_time, but potentially much earlier.
| * | Tolerate a little skew in accounting intervals.Nick Mathewson2010-09-03
| | | | | | | | | | | | | | | | | | | | | This will make changes for DST still work, and avoid double-spending bytes when there are slight changes to configurations. Fixes bug 1511; the DST issue is a bugfix on 0.0.9pre5.
* | | Bug1789 cleanups suggested by armaNick Mathewson2010-09-21
| | | | | | | | | | | | The significant one is that we look at RelayBandwidthRate if it is set.
* | | finish a comment, lower a variableNick Mathewson2010-09-15
| | |
* | | How many seconds until != timestamp of that dateSebastian Hahn2010-09-15
| | |
* | | Base our expected bw accounting usage on time before soft limitNick Mathewson2010-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we were also considering the time spent in soft-hibernation. If this was a long time, we would wind up underestimating our bandwidth by a lot, and skewing our wakeup time towards the start of the accounting interval. This patch also makes us store a few more fields in the state file, including the time at which we entered soft hibernation. Fixes bug 1789. Bugfix on 0.0.9pre5.
* | | Use a more sophisticated soft-hibernation-limit calculationNick Mathewson2010-09-03
| | | | | | | | | | | | This should help address bug 1789.
* | | Remove an obsolete comment from hibernate.cNick Mathewson2010-09-03
|/ /
* | Create main.hSebastian Hahn2010-07-27
| |
* | Create hibernate.hSebastian Hahn2010-07-27
| |
* | Create connection_edge.hSebastian Hahn2010-07-27
| |
* | Create connection.hSebastian Hahn2010-07-27
| |
* | Create config.hSebastian Hahn2010-07-27
| |
* | Create router.hSebastian Hahn2010-07-27
| |
* | Make the controller act more usefully when GETINFO failsNick Mathewson2010-07-18
| | | | | | | | | | | | | | | | | | | | | | Right now it says "552 internal error" because there's no way for getinfo_helper_*() countries to specify an error message. This patch changes the getinfo_helper_*() interface, and makes most of the getinfo helpers give useful error messages in response to failures. This should prevent recurrences of bug 1699, where a missing GeoIPFile line in the torrc made GETINFO ip-to-county/* fail in a "not obvious how to fix" way.
* | Merge remote branch 'origin/maint-0.2.1'Nick Mathewson2010-02-27
|\| | | | | | | | | | | Conflicts: src/common/test.h src/or/test.c
| * Update Tor Project copyright yearsNick Mathewson2010-02-27
| |
* | Fix/annotate deadcode for CID 402,403Nick Mathewson2009-10-26
|/