aboutsummaryrefslogtreecommitdiff
path: root/src/or/rephist.c
AgeCommit message (Collapse)Author
2011-10-25Avoid likely memory fragmentation from rep_hist_note_descs_servedNick Mathewson
When you're doing malloc(sizeof(int)), something may well have gone wrong. This technique is a bit abusive, but we're already relying on it working correctly in geoip.c.
2011-10-25Add percentiles to the desc stats reportingSebastian Hahn
To get a better idea what's going on on Tonga, add some code to report how often the most and least frequently fetched descriptor was fetched, as well as 25, 50, 75 percentile. Also ensure we only count bridge descriptors here.
2011-10-24Don't initialize desc stats for non-bridgedirauth nodesSebastian Hahn
Also make sure that calling rep_hist_note_desc_served() while stats aren't initialized just returns. Bug spotted by SwissTorHelp. Thanks!
2011-10-21Check for jumping clock in *format_*stats functionsSebastian Hahn
None of these were real bugs (yet), because the callers made sure everything was fine. Make it more explicit. Suggested by Nick
2011-10-21Add new stats type: descriptor fetch statsSebastian Hahn
This is used for the bridge authority currently, to get a better intuition on how many descriptors are actually fetched from it and how many fetches happen in total. Implements ticket 4200.
2011-09-09Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: configure.in src/or/circuitbuild.c
2011-08-30Use %f with printf-style formatting, not %lfNick Mathewson
For printf, %f and %lf are synonymous, since floats are promoted to doubles when passed as varargs. It's only for scanf that we need to say "%lf" for doubles and "%f" for floats. Apparenly, some older compilers think it's naughty to say %lf and like to spew warnings about it. Found by grarpamp.
2011-08-04Add unit tests for buffer-stats.Karsten Loesing
Now that formatting the buffer-stats string is separate from writing it to disk, we can also decouple the logic to extract stats from circuits and finally write some unit tests for the history code.
2011-08-04Separate generation of a buffer-stats string from writing it to disk.Karsten Loesing
The new rep_hist_format_buffer_stats() generates a buffer-stats string that rep_hist_buffer_stats_write() writes to disk. All the state changing (e.g., resetting the buffer-stats history and initializing the next measurement interval) takes place in rep_hist_buffer_stats_write(). That allows us to finally test the buffer-stats code better.
2011-08-04Clean up rep_hist_buffer_stats_write().Karsten Loesing
We later want to split this function into one function that generates the buffer-stats string and one that writes it to disk.
2011-08-04Create cell-stats history even if we didn't see a single circuit.Karsten Loesing
So far, if we didn't see a single circuit, we refrained from generating a cell-stats string and logged a warning. Nobody will notice the warning, and people will wonder why there's no cell-stats string in the extra-info descriptor. The better behavior is to generate a cell-stats string with all zeros.
2011-08-04Replace files in stats/ rather than appending to them.Karsten Loesing
Right now, we append statistics to files in the stats/ directory for half of the statistics, whereas we overwrite these files for the other half. In particular, we append buffer, dirreq, and entry stats and overwrite exit, connection, and bridge stats. Appending to files was useful when we didn't include stats in extra-info descriptors, because otherwise we'd have to copy them away to prevent Tor from overwriting them. But now that we include statistics in extra-info descriptors, it makes no sense to keep the old statistics forever. We should change the behavior to overwriting instead of appending for all statistics. Implements #2930.
2011-07-19Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-07-19Specify text or binary mode in every start_writing_to_stdio_file callRobert Ransom
2011-06-14Make the get_options() return constNick Mathewson
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!
2011-06-14Fix another check_private_dir instance in masterNick Mathewson
2011-06-14Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-06-14Make ControlSocketsGroupWritable work with User.Jérémy Bobbio
Original message from bug3393: check_private_dir() to ensure that ControlSocketsGroupWritable is safe to use. Unfortunately, check_private_dir() only checks against the currently running user… which can be root until privileges are dropped to the user and group configured by the User config option. The attached patch fixes the issue by adding a new effective_user argument to check_private_dir() and updating the callers. It might not be the best way to fix the issue, but it did in my tests. (Code by lunar; changelog by nickm)
2011-06-08Fix a rare memleak during stats writingSebastian Hahn
If rep_hist_buffer_stats_write() was called unitinitalized, we'd leak memory.
2011-06-08remove some dead code, found by coveritySebastian Hahn
2011-05-30Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
The conflicts were mainly caused by the routerinfo->node transition. Conflicts: src/or/circuitbuild.c src/or/command.c src/or/connection_edge.c src/or/directory.c src/or/dirserv.c src/or/relay.c src/or/rendservice.c src/or/routerlist.c
2011-05-15Log descriptions of nodes, not just nicknames.Nick Mathewson
This patch introduces a few new functions in router.c to produce a more helpful description of a node than its nickame, and then tweaks nearly all log messages taking a nickname as an argument to call these functions instead. There are a few cases where I left the old log messages alone: in these cases, the nickname was that of an authority (whose nicknames are useful and unique), or the message already included an identity and/or an address. I might have missed a couple more too. This is a fix for bug 3045.
2011-05-11Merge remote-tracking branch 'public/bug3122_memcmp_022' into bug3122_memcmp_023Nick Mathewson
Conflicts in various places, mainly node-related. Resolved them in favor of HEAD, with copying of tor_mem* operations from bug3122_memcmp_022. src/common/Makefile.am src/or/circuitlist.c src/or/connection_edge.c src/or/directory.c src/or/microdesc.c src/or/networkstatus.c src/or/router.c src/or/routerlist.c src/test/test_util.c
2011-05-11Merge remote-tracking branch 'public/3122_memcmp_squashed' into ↵Nick Mathewson
bug3122_memcmp_022 Conflicts throughout. All resolved in favor of taking HEAD and adding tor_mem* or fast_mem* ops as appropriate. src/common/Makefile.am src/or/circuitbuild.c src/or/directory.c src/or/dirserv.c src/or/dirvote.c src/or/networkstatus.c src/or/rendclient.c src/or/rendservice.c src/or/router.c src/or/routerlist.c src/or/routerparse.c src/or/test.c
2011-05-11Hand-conversion and audit phase of memcmp transitionNick Mathewson
Here I looked at the results of the automated conversion and cleaned them up as follows: If there was a tor_memcmp or tor_memeq that was in fact "safe"[*] I changed it to a fast_memcmp or fast_memeq. Otherwise if there was a tor_memcmp that could turn into a tor_memneq or tor_memeq, I converted it. This wants close attention. [*] I'm erring on the side of caution here, and leaving some things as tor_memcmp that could in my opinion use the data-dependent fast_memcmp variant.
2011-04-28Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-04-28Merge remote-tracking branch 'sebastian/bug2497' into maint-0.2.2Nick Mathewson
2011-04-26Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/or/rephist.c
2011-04-26fix some comments before they create conflictsRoger Dingledine
2011-04-26Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-04-26Fix compilation in last patchNick Mathewson
2011-04-26Fix more of bug 2704Sebastian Hahn
The last entry of the *Maxima values in the state file was inflated by a factor of NUM_SECS_ROLLING_MEASURE (currently 10). This could lead to a wrong maximum value propagating through the state file history.
2011-04-19Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-04-19Prevent hugely inflated observed bandwidth valuesSebastian Hahn
When reading the bw history from the state file, we'd add the 900-second value as traffic that occured during one second. Fix that by adding the average value to each second. This bug was present since 0.2.0.5-alpha, but was hidden until 0.2.23-alpha when we started using the saved values.
2011-04-19Don't sometimes undercount bw averageSebastian Hahn
This fixes the first part of bug 2704. It should occur only rarely when no bw maxima are known. Bugfix on 0.2.2.23-alpha. Fixes bug 2704.
2011-04-19Don't report empty bw-history lines in extrainfoSebastian Hahn
Some tor relays would report lines like these in their extrainfo documents: dirreq-write-history 2011-03-14 16:46:44 (900 s) This was confusing to some people who look at the stats. It would happen whenever a relay first starts up, or when a relay has dirport disabled. Change this so that lines without actual bw entries are omitted. Implements ticket 2497.
2011-04-08Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/or/rephist.c
2011-04-07Free circuits_for_buffer_stats on shutdownNick Mathewson
2011-04-07Fix up some cell-queue stats issues in rephist.cNick Mathewson
- Document the structure and variables. - Make circuits_for_buffer_stats into a static variable. - Don't die horribly if interval_length is 0. - Remove the unused local_circ_id field. - Reorder the fields of circ_buffer_stats_t for cleaner alignment layout.
2011-04-07Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
Conflicts: src/common/address.c src/common/compat_libevent.c src/common/memarea.c src/common/util.h src/or/buffers.c src/or/circuitbuild.c src/or/circuituse.c src/or/connection.c src/or/directory.c src/or/networkstatus.c src/or/or.h src/or/routerlist.c
2011-04-07Merge remote-tracking branch 'public/xxx_fixups' into maint-0.2.2Nick Mathewson
Conflicts: src/or/or.h
2011-03-30Use timevals, not time_t, when expiring circuits.Nick Mathewson
We've got millisecond timers now, we might as well use them. This change won't actually make circuits get expiered with microsecond precision, since we only call the expiry functions once per second. Still, it should avoid the situation where we have a circuit get expired too early because of rounding. A couple of the expiry functions now call tor_gettimeofday: this should be cheap since we're only doing it once per second. If it gets to be called more often, though, we should onsider having the current time be an argument again.
2011-03-25Triage the XXX022 and XXX021 comments remaining in the codeNick Mathewson
Remove some, postpone others, leave some alone. Now the only remaining XXX022s are ones that seem important to fix or investigate.
2011-03-16Merge remote-tracking branch 'origin/maint-0.2.2'Nick Mathewson
2011-03-16Remove a useless doxygen commentNick Mathewson
2011-03-11Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
2011-03-11Clarify threat description and avoid negative uptimes.Nick Mathewson
2011-03-11Use observed instead of declared uptime for HSDirSebastian Hahn
It is important to verify the uptime claim of a relay instead of just trusting it, otherwise it becomes too easy to blackhole a specific hidden service. rephist already has data available that we can use here. Bugfix on 0.2.0.10-alpha.
2011-03-08Merge remote branch 'origin/maint-0.2.2'Nick Mathewson
Resolved trivial one-line conflicts. Conflicts: src/or/dirserv.c src/or/rephist.c
2011-03-08Merge remote branch 'sebastian/bug1035' into maint-0.2.2Nick Mathewson