Tor
0.4.7.0-alpha-dev
|
Dump unparseable objects to disk. More...
#include "core/or/or.h"
#include "app/config/config.h"
#include "feature/dirparse/unparseable.h"
#include "lib/sandbox/sandbox.h"
Go to the source code of this file.
Macros | |
#define | UNPARSEABLE_PRIVATE |
#define | DESC_DUMP_DATADIR_SUBDIR "unparseable-descs" |
#define | DESC_DUMP_BASE_FILENAME "unparseable-desc" |
Functions | |
void | dump_desc_init (void) |
static void | dump_desc_create_dir (void) |
static void | dump_desc_fifo_add_and_clean (char *filename, const uint8_t *digest_sha256, size_t len) |
static int | dump_desc_fifo_bump_hash (const uint8_t *digest_sha256) |
void | dump_desc_fifo_cleanup (void) |
STATIC dumped_desc_t * | dump_desc_populate_one_file (const char *dirname, const char *f) |
static int | dump_desc_compare_fifo_entries (const void **a_v, const void **b_v) |
STATIC void | dump_desc_populate_fifo_from_directory (const char *dirname) |
void | dump_desc (const char *desc, const char *type) |
Variables | |
STATIC smartlist_t * | descs_dumped = NULL |
STATIC uint64_t | len_descs_dumped = 0 |
static int | have_dump_desc_dir = 0 |
static int | problem_with_dump_desc_dir = 0 |
Dump unparseable objects to disk.
Definition in file unparseable.c.
void dump_desc | ( | const char * | desc, |
const char * | type | ||
) |
For debugging purposes, dump unparseable descriptor *desc of type *type to file $DATADIR/unparseable-desc. Do not write more than one descriptor to disk per minute. If there is already such a file in the data directory, overwrite it.
Definition at line 496 of file unparseable.c.
|
static |
Sort helper for dump_desc_populate_fifo_from_directory(); compares the when field of dumped_desc_ts in a smartlist to put the FIFO in the correct order after reconstructing it from the directory.
Definition at line 389 of file unparseable.c.
|
static |
Create the dump directory if needed and possible
Definition at line 97 of file unparseable.c.
|
static |
Dump desc FIFO/cleanup; take ownership of the given filename, add it to the FIFO, and clean up the oldest entries to the extent they exceed the configured cap. If any old entries with a matching hash existed, they just got overwritten right before this was called and we should adjust the total size counter without deleting them.
Definition at line 130 of file unparseable.c.
|
static |
Check if we already have a descriptor for this hash and move it to the head of the queue if so. Return 1 if one existed and 0 otherwise.
Definition at line 201 of file unparseable.c.
void dump_desc_fifo_cleanup | ( | void | ) |
Clean up on exit; just memory, leave the dumps behind
Definition at line 239 of file unparseable.c.
Referenced by routerparse_free_all().
void dump_desc_init | ( | void | ) |
Find the dump directory and check if we'll be able to create it
Definition at line 38 of file unparseable.c.
Referenced by routerparse_init().
STATIC void dump_desc_populate_fifo_from_directory | ( | const char * | dirname | ) |
Scan the contents of the directory, and update FIFO/counters; this will consistency-check descriptor dump filenames against hashes of descriptor dump file content, and remove any inconsistent/unreadable dumps, and then reconstruct the dump FIFO as closely as possible for the last time the tor process shut down. If a previous dump was repeated more than once and moved ahead in the FIFO, the mtime will not have been updated and the reconstructed order will be wrong, but will always be a permutation of the original.
Definition at line 426 of file unparseable.c.
STATIC dumped_desc_t* dump_desc_populate_one_file | ( | const char * | dirname, |
const char * | f | ||
) |
Handle one file for dump_desc_populate_fifo_from_directory(); make sure the filename is sensibly formed and matches the file content, and either return a dumped_desc_t for it or remove the file and return NULL.
Definition at line 260 of file unparseable.c.
STATIC smartlist_t* descs_dumped = NULL |
List of dumped descriptors for FIFO cleanup purposes
Definition at line 26 of file unparseable.c.
Referenced by dump_desc_fifo_add_and_clean(), dump_desc_fifo_bump_hash(), and dump_desc_fifo_cleanup().
|
static |
Directory to stash dumps in
Definition at line 30 of file unparseable.c.
STATIC uint64_t len_descs_dumped = 0 |
Total size of dumped descriptors for FIFO cleanup
Definition at line 28 of file unparseable.c.
Referenced by dump_desc_fifo_add_and_clean().