Tor
0.4.7.0-alpha-dev
|
Header file for dirserv.c. More...
#include "lib/testsupport/testsupport.h"
Go to the source code of this file.
Data Structures | |
struct | spooled_resource_t |
Macros | |
#define | dir_spool_source_bitfield_t ENUM_BF(dir_spool_source_t) |
#define | have_module_dircache() (0) |
#define | directory_caches_unknown_auth_certs(opt) ((void)(opt), 0) |
#define | directory_caches_dir_info(opt) ((void)(opt), 0) |
#define | directory_permits_begindir_requests(opt) ((void)(opt), 0) |
#define | dirserv_get_consensus(flav) ((void)(flav), NULL) |
#define | dirserv_set_cached_consensus_networkstatus(a, b, c, d, e, f) |
#define | spooled_resource_free(sp) FREE_AND_NULL(spooled_resource_t, spooled_resource_free_, (sp)) |
Enumerations | |
enum | dir_spool_source_t { DIR_SPOOL_SERVER_BY_DIGEST =1 , DIR_SPOOL_SERVER_BY_FP , DIR_SPOOL_EXTRA_BY_DIGEST , DIR_SPOOL_EXTRA_BY_FP , DIR_SPOOL_MICRODESC , DIR_SPOOL_NETWORKSTATUS , DIR_SPOOL_CONSENSUS_CACHE_ENTRY } |
Functions | |
int | connection_dirserv_flushed_some (dir_connection_t *conn) |
int | dir_split_resource_into_spoolable (const char *resource, enum dir_spool_source_t source, smartlist_t *spool_out, int *compressed_out, int flags) |
void | dirserv_clear_old_networkstatuses (time_t cutoff) |
int | dirserv_get_routerdesc_spool (smartlist_t *spools_out, const char *key, dir_spool_source_t source, int conn_is_encrypted, const char **msg_out) |
void | dirserv_free_all (void) |
void | cached_dir_decref (cached_dir_t *d) |
cached_dir_t * | new_cached_dir (char *s, time_t published) |
spooled_resource_t * | spooled_resource_new (dir_spool_source_t source, const uint8_t *digest, size_t digestlen) |
spooled_resource_t * | spooled_resource_new_from_cache_entry (struct consensus_cache_entry_t *entry) |
void | spooled_resource_free_ (spooled_resource_t *spooled) |
void | dirserv_spool_remove_missing_and_guess_size (dir_connection_t *conn, time_t cutoff, int compression, size_t *size_out, int *n_expired_out) |
void | dirserv_spool_sort (dir_connection_t *conn) |
void | dir_conn_clear_spool (dir_connection_t *conn) |
#define dirserv_set_cached_consensus_networkstatus | ( | a, | |
b, | |||
c, | |||
d, | |||
e, | |||
f | |||
) |
enum dir_spool_source_t |
void cached_dir_decref | ( | cached_dir_t * | d | ) |
Decrement the reference count on d, and free it if it no longer has any references.
Definition at line 124 of file dirserv.c.
Referenced by free_cached_dir_(), and spooled_resource_free_().
int connection_dirserv_flushed_some | ( | dir_connection_t * | conn | ) |
Called whenever we have flushed some directory data in state SERVER_WRITING, or whenever we want to fill the buffer with initial directory data (so that subsequent writes will occur, and trigger this function again.)
Return 0 on success, and -1 on failure.
Definition at line 27 of file dircache_stub.c.
void dir_conn_clear_spool | ( | dir_connection_t * | conn | ) |
Remove every element from conn's outgoing spool, and delete the spool.
Definition at line 36 of file dircache_stub.c.
int dir_split_resource_into_spoolable | ( | const char * | resource, |
dir_spool_source_t | source, | ||
smartlist_t * | spool_out, | ||
int * | compressed_out, | ||
int | flags | ||
) |
As dir_split_resource_into_fingerprints, but instead fills spool_out with a list of spoolable_resource_t for the resource identified through source.
Definition at line 212 of file dirserv.c.
Referenced by handle_get_microdesc().
void dirserv_free_all | ( | void | ) |
Release all storage used by the directory server.
Definition at line 78 of file dircache_stub.c.
int dirserv_get_routerdesc_spool | ( | smartlist_t * | spool_out, |
const char * | key, | ||
dir_spool_source_t | source, | ||
int | conn_is_encrypted, | ||
const char ** | msg_out | ||
) |
As dirserv_get_routerdescs(), but instead of getting signed_descriptor_t pointers, adds copies of digests to fps_out, and doesn't use the /tor/server/ prefix. For a /d/ request, adds descriptor digests; for other requests, adds identity digests.
void dirserv_spool_remove_missing_and_guess_size | ( | dir_connection_t * | conn, |
time_t | cutoff, | ||
int | compression, | ||
size_t * | size_out, | ||
int * | n_expired_out | ||
) |
Try to guess the number of bytes that will be needed to send the spooled objects for conn's outgoing spool. In the process, remove every element of the spool that refers to an absent object, or which was published earlier than cutoff. Set *size_out to the number of bytes, and *n_expired_out to the number of objects removed for being too old.
void dirserv_spool_sort | ( | dir_connection_t * | conn | ) |
cached_dir_t* new_cached_dir | ( | char * | s, |
time_t | published | ||
) |
Allocate and return a new cached_dir_t containing the string s, published at published.
Definition at line 135 of file dirserv.c.
Referenced by dirserv_set_cached_consensus_networkstatus().
void spooled_resource_free_ | ( | spooled_resource_t * | spooled | ) |
spooled_resource_t* spooled_resource_new_from_cache_entry | ( | consensus_cache_entry_t * | entry | ) |
Create a new spooled_resource_t to spool the contents of entry to the user. Return the spooled object on success, or NULL on failure (which is probably caused by a failure to map the body of the item from disk).
Adds a reference to entry's reference counter.