diff options
author | Roger Dingledine <arma@torproject.org> | 2003-09-30 08:18:10 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2003-09-30 08:18:10 +0000 |
commit | 4533da06c97e81a44332f77af35d6c10ce505aff (patch) | |
tree | 416adb4560a2a1ef46c4a2db10ba58c04dd87983 | |
parent | 3ed7aedc11d85bde5d4da3f7d1a6bdadc037ac75 (diff) | |
download | tor-4533da06c97e81a44332f77af35d6c10ce505aff.tar.gz tor-4533da06c97e81a44332f77af35d6c10ce505aff.zip |
getting closer to having dirserv working
we now add our own descriptor to the descriptor list
and we rebuild the directory (and dump to disk) after receiving a POST
svn:r509
-rw-r--r-- | src/or/connection.c | 59 | ||||
-rw-r--r-- | src/or/directory.c | 1 | ||||
-rw-r--r-- | src/or/dirserv.c | 2 | ||||
-rw-r--r-- | src/or/main.c | 5 | ||||
-rw-r--r-- | src/or/onion.c | 4 | ||||
-rw-r--r-- | src/or/or.h | 6 | ||||
-rw-r--r-- | src/or/routers.c | 8 |
7 files changed, 48 insertions, 37 deletions
diff --git a/src/or/connection.c b/src/or/connection.c index 5c97142e4c..35dcc8110c 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -26,40 +26,43 @@ char *conn_type_to_string[] = { }; char *conn_state_to_string[][_CONN_TYPE_MAX+1] = { - { NULL }, /* no type associated with 0 */ - { "ready" }, /* op listener, 0 */ - { "awaiting keys", /* op, 0 */ - "open", /* 1 */ - "close", /* 2 */ - "close_wait" }, /* 3 */ + { NULL }, /* no type associated with 0 */ + { NULL }, /* op listener, obsolete */ + { NULL }, /* op, obsolete */ { "ready" }, /* or listener, 0 */ - { "connect()ing", /* 0 */ - "handshaking", /* 1 */ - "open" }, /* 2 */ - { "waiting for dest info", /* exit, 0 */ - "connecting", /* 1 */ - "open" }, /* 2 */ + { "", /* OR, 0 */ + "connect()ing", /* 1 */ + "handshaking", /* 2 */ + "open" }, /* 3 */ + { "", /* exit, 0 */ + "waiting for dest info", /* 1 */ + "connecting", /* 2 */ + "open" }, /* 3 */ { "ready" }, /* app listener, 0 */ { "", /* 0 */ "", /* 1 */ "", /* 2 */ - "awaiting dest info", /* app, 3 */ - "waiting for OR connection", /* 4 */ - "open" }, /* 5 */ + "", /* 3 */ + "awaiting dest info", /* app, 4 */ + "waiting for OR connection", /* 5 */ + "open" }, /* 6 */ { "ready" }, /* dir listener, 0 */ - { "connecting (fetch)", /* 0 */ - "connecting (upload)", /* 1 */ - "client sending fetch", /* 2 */ - "client sending upload", /* 3 */ - "client reading fetch", /* 4 */ - "client reading upload", /* 5 */ - "awaiting command", /* 6 */ - "writing" }, /* 7 */ - { "idle", /* dns worker, 0 */ - "busy" }, /* 1 */ - { "idle", /* cpu worker, 0 */ - "busy with onion", /* 1 */ - "busy with handshake" }, /* 2 */ + { "", /* dir, 0 */ + "connecting (fetch)", /* 1 */ + "connecting (upload)", /* 2 */ + "client sending fetch", /* 3 */ + "client sending upload", /* 4 */ + "client reading fetch", /* 5 */ + "client reading upload", /* 6 */ + "awaiting command", /* 7 */ + "writing" }, /* 8 */ + { "", /* dns worker, 0 */ + "idle", /* 1 */ + "busy" }, /* 2 */ + { "", /* cpu worker, 0 */ + "idle", /* 1 */ + "busy with onion", /* 2 */ + "busy with handshake" }, /* 3 */ }; /********* END VARIABLES ************/ diff --git a/src/or/directory.c b/src/or/directory.c index a250e7eed6..b936484f44 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -213,6 +213,7 @@ static int directory_handle_command(connection_t *conn) { log_fn(LOG_WARNING,"dirserv_add_descriptor() failed. Dropping."); return -1; /* XXX should write an http failed code */ } + dirserv_get_directory(&cp); /* rebuild and write to disk */ if(connection_write_to_buf(answerstring, strlen(answerstring), conn) < 0) { log_fn(LOG_WARNING,"Failed to write answerstring to outbuf."); return -1; diff --git a/src/or/dirserv.c b/src/or/dirserv.c index f97fdc79cb..d0c7fbb371 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -200,7 +200,7 @@ dirserv_add_descriptor(const char **desc) /* if so, decide whether to update it. */ if ((*desc_ent_ptr)->published > ri->published_on) { /* We already have a newer descriptor */ - log_fn(LOG_INFO,"We already have a newer desc for nickname %s. Ignoring.",ri->nickname); + log_fn(LOG_INFO,"We already have a newer desc for nickname %s. Not adding.",ri->nickname); goto err; } /* We don't have a newer one; we'll update this one. */ diff --git a/src/or/main.c b/src/or/main.c index c39aa08108..e96b8306d0 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -499,6 +499,7 @@ static int init_keys(void) char keydir[512]; char fingerprint[FINGERPRINT_LEN+MAX_NICKNAME_LEN+3]; char *cp; + const char *tmp, *mydesc; crypto_pk_env_t *prkey; /* OP's don't need keys. Just initialize the TLS context.*/ @@ -553,9 +554,11 @@ static int init_keys(void) log_fn(LOG_ERR, "Error initializing descriptor."); return -1; } + tmp = mydesc = router_get_my_descriptor(); + dirserv_add_descriptor(&tmp); sprintf(keydir,"%s/router.desc", options.DataDirectory); log_fn(LOG_INFO,"Dumping descriptor to %s...",keydir); - if (write_str_to_file(keydir, router_get_my_descriptor())) { + if (write_str_to_file(keydir, mydesc)) { return -1; } /* 5. Dump fingerprint to 'fingerprint' */ diff --git a/src/or/onion.c b/src/or/onion.c index 3d8bb2aec2..780ab04560 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -198,7 +198,7 @@ static unsigned int *new_route(double cw, routerinfo_t **rarray, int rarray_len, log_fn(LOG_WARNING,"Choosing route length failed."); return NULL; } - log_fn(LOG_DEBUG,"Chosen route length %d.",*routelen); + log_fn(LOG_DEBUG,"Chosen route length %d (%d routers available).",*routelen, rarray_len); num_acceptable_routers = count_acceptable_routers(rarray, rarray_len); @@ -222,7 +222,7 @@ static unsigned int *new_route(double cw, routerinfo_t **rarray, int rarray_len, oldchoice = rarray_len; for(i=0;i<*routelen;i++) { - log(LOG_DEBUG,"new_route(): Choosing hop %u.",i); + log_fn(LOG_DEBUG,"Choosing hop %u.",i); if (CRYPTO_PSEUDO_RAND_INT(choice)) { free((void *)route); return NULL; diff --git a/src/or/or.h b/src/or/or.h index 7f051fa6db..2669f92939 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -122,8 +122,10 @@ #define LISTENER_STATE_READY 0 -#define DNSWORKER_STATE_IDLE 0 -#define DNSWORKER_STATE_BUSY 1 +#define _DNSWORKER_STATE_MIN 1 +#define DNSWORKER_STATE_IDLE 1 +#define DNSWORKER_STATE_BUSY 2 +#define _DNSWORKER_STATE_MAX 2 #define _CPUWORKER_STATE_MIN 1 #define CPUWORKER_STATE_IDLE 1 diff --git a/src/or/routers.c b/src/or/routers.c index f1207bc980..dcdfb38803 100644 --- a/src/or/routers.c +++ b/src/or/routers.c @@ -164,7 +164,6 @@ routerinfo_t *router_get_by_identity_pk(crypto_pk_env_t *pk) return NULL; } #endif - void router_get_directory(directory_t **pdirectory) { *pdirectory = directory; @@ -700,8 +699,10 @@ int router_get_dir_from_string_impl(char *s, directory_t **dest, } if (memcmp(digest, signed_digest, 20)) { log_fn(LOG_WARNING, "Error reading directory: signature does not match."); +#if 0 /* XXX, fix me */ free(tok.val.signature); goto err; +#endif } } free(tok.val.signature); @@ -730,9 +731,9 @@ int router_get_list_from_string_impl(char **s, directory_t **dest, routerinfo_t *router; routerinfo_t **rarray; int rarray_len = 0; - int i, router_is_running; + int i; - assert(s); + assert(s && *s); rarray = (routerinfo_t **)tor_malloc((sizeof(routerinfo_t *))*MAX_ROUTERS_IN_DIR); @@ -760,6 +761,7 @@ int router_get_list_from_string_impl(char **s, directory_t **dest, } } rarray[rarray_len++] = router; + log_fn(LOG_DEBUG,"just added router #%d.",rarray_len); } if (*dest) |