mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
better comments and a few patches
svn:r164
This commit is contained in:
parent
c5e7d4ca7a
commit
1768f29d7e
@ -8,6 +8,10 @@
|
|||||||
|
|
||||||
extern or_options_t options; /* command-line and config-file options */
|
extern or_options_t options; /* command-line and config-file options */
|
||||||
|
|
||||||
|
/* Create a new buf of size MAX_BUF_SIZE. Write a pointer to it
|
||||||
|
* into *buf, write MAX_BUF_SIZE into *buflen, and initialize
|
||||||
|
* *buf_datalen to 0. Return 0 if success, or -1 if malloc fails.
|
||||||
|
*/
|
||||||
int buf_new(char **buf, int *buflen, int *buf_datalen) {
|
int buf_new(char **buf, int *buflen, int *buf_datalen) {
|
||||||
|
|
||||||
assert(buf && buflen && buf_datalen);
|
assert(buf && buflen && buf_datalen);
|
||||||
@ -15,7 +19,7 @@ int buf_new(char **buf, int *buflen, int *buf_datalen) {
|
|||||||
*buf = (char *)malloc(MAX_BUF_SIZE);
|
*buf = (char *)malloc(MAX_BUF_SIZE);
|
||||||
if(!*buf)
|
if(!*buf)
|
||||||
return -1;
|
return -1;
|
||||||
memset(*buf,0,MAX_BUF_SIZE);
|
// memset(*buf,0,MAX_BUF_SIZE);
|
||||||
*buflen = MAX_BUF_SIZE;
|
*buflen = MAX_BUF_SIZE;
|
||||||
*buf_datalen = 0;
|
*buf_datalen = 0;
|
||||||
|
|
||||||
@ -26,13 +30,12 @@ void buf_free(char *buf) {
|
|||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
int read_to_buf(int s, int at_most, char **buf, int *buflen, int *buf_datalen, int *reached_eof) {
|
/* read from socket s, writing onto buf+buf_datalen. If at_most is >= 0 then
|
||||||
|
|
||||||
/* read from socket s, writing onto buf+buf_datalen. If at_most is >= 0 then
|
|
||||||
* read at most 'at_most' bytes, and in any case don't read more than will fit based on buflen.
|
* read at most 'at_most' bytes, and in any case don't read more than will fit based on buflen.
|
||||||
* If read() returns 0, set *reached_eof to 1 and return 0. If you want to tear
|
* If read() returns 0, set *reached_eof to 1 and return 0. If you want to tear
|
||||||
* down the connection return -1, else return the number of bytes read.
|
* down the connection return -1, else return the number of bytes read.
|
||||||
*/
|
*/
|
||||||
|
int read_to_buf(int s, int at_most, char **buf, int *buflen, int *buf_datalen, int *reached_eof) {
|
||||||
|
|
||||||
int read_result;
|
int read_result;
|
||||||
|
|
||||||
|
@ -454,10 +454,9 @@ int dns_resolve(connection_t *exitconn) {
|
|||||||
|
|
||||||
strncpy(search.question, exitconn->address, MAX_ADDRESSLEN);
|
strncpy(search.question, exitconn->address, MAX_ADDRESSLEN);
|
||||||
|
|
||||||
/* try adding it to the tree. if it's already there it will
|
/* check the tree to see if 'question' is already there. */
|
||||||
* return it. */
|
|
||||||
resolve = SPLAY_FIND(cache_tree, &cache_root, &search);
|
resolve = SPLAY_FIND(cache_tree, &cache_root, &search);
|
||||||
if(resolve) { /* already there. free up new_resolve */
|
if(resolve) { /* already there */
|
||||||
switch(resolve->state) {
|
switch(resolve->state) {
|
||||||
case CACHE_STATE_PENDING:
|
case CACHE_STATE_PENDING:
|
||||||
/* add us to the pending list */
|
/* add us to the pending list */
|
||||||
@ -472,7 +471,7 @@ int dns_resolve(connection_t *exitconn) {
|
|||||||
case CACHE_STATE_FAILED:
|
case CACHE_STATE_FAILED:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else { /* this was newly added to the tree. ask the dns farm. */
|
} else { /* need to add it */
|
||||||
resolve = malloc(sizeof(struct cached_resolve));
|
resolve = malloc(sizeof(struct cached_resolve));
|
||||||
memset(resolve, 0, sizeof(struct cached_resolve));
|
memset(resolve, 0, sizeof(struct cached_resolve));
|
||||||
resolve->state = CACHE_STATE_PENDING;
|
resolve->state = CACHE_STATE_PENDING;
|
||||||
|
@ -650,6 +650,7 @@ int main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init_tracked_tree(); /* initialize the replay detection tree */
|
init_tracked_tree(); /* initialize the replay detection tree */
|
||||||
|
init_cache_tree(); /* initialize the dns resolve tree */
|
||||||
|
|
||||||
signal (SIGINT, catch); /* catch kills so we can exit cleanly */
|
signal (SIGINT, catch); /* catch kills so we can exit cleanly */
|
||||||
signal (SIGTERM, catch);
|
signal (SIGTERM, catch);
|
||||||
|
Loading…
Reference in New Issue
Block a user