|
@@ -125,7 +125,6 @@ static struct {
|
|
|
{ "router-signature", K_ROUTER_SIGNATURE, NO_ARGS, NEED_OBJ,RTR },
|
|
|
{ "running-routers", K_RUNNING_ROUTERS, ARGS, NO_OBJ, DIR },
|
|
|
{ "router-status", K_ROUTER_STATUS, ARGS, NO_OBJ, DIR },
|
|
|
- { "ports", K_PORTS, ARGS, NO_OBJ, RTR },
|
|
|
{ "bandwidth", K_BANDWIDTH, ARGS, NO_OBJ, RTR },
|
|
|
{ "platform", K_PLATFORM, CONCAT_ARGS, NO_OBJ, RTR },
|
|
|
{ "published", K_PUBLISHED, CONCAT_ARGS, NO_OBJ, ANYSIGNED },
|
|
@@ -707,7 +706,6 @@ router_parse_entry_from_string(const char *s, const char *end)
|
|
|
smartlist_t *tokens = NULL, *exit_policy_tokens = NULL;
|
|
|
directory_token_t *tok;
|
|
|
int t;
|
|
|
- int ports_set, bw_set;
|
|
|
struct in_addr in;
|
|
|
|
|
|
if (!end) {
|
|
@@ -750,9 +748,8 @@ router_parse_entry_from_string(const char *s, const char *end)
|
|
|
router->cache_info.signed_descriptor = tor_strndup(s, end-s);
|
|
|
router->cache_info.signed_descriptor_len = end-s;
|
|
|
memcpy(router->cache_info.signed_descriptor_digest, digest, DIGEST_LEN);
|
|
|
- ports_set = bw_set = 0;
|
|
|
|
|
|
- if (tok->n_args == 2 || tok->n_args == 5 || tok->n_args == 6) {
|
|
|
+ if (tok->n_args >= 5) {
|
|
|
router->nickname = tor_strdup(tok->args[0]);
|
|
|
if (!is_legal_nickname(router->nickname)) {
|
|
|
warn(LD_DIR,"Router nickname is invalid");
|
|
@@ -765,44 +762,22 @@ router_parse_entry_from_string(const char *s, const char *end)
|
|
|
}
|
|
|
router->addr = ntohl(in.s_addr);
|
|
|
|
|
|
- if (tok->n_args >= 5) {
|
|
|
- router->or_port =
|
|
|
- (uint16_t) tor_parse_long(tok->args[2],10,0,65535,NULL,NULL);
|
|
|
- router->dir_port =
|
|
|
- (uint16_t) tor_parse_long(tok->args[4],10,0,65535,NULL,NULL);
|
|
|
- ports_set = 1;
|
|
|
- }
|
|
|
+ router->or_port =
|
|
|
+ (uint16_t) tor_parse_long(tok->args[2],10,0,65535,NULL,NULL);
|
|
|
+ router->dir_port =
|
|
|
+ (uint16_t) tor_parse_long(tok->args[4],10,0,65535,NULL,NULL);
|
|
|
} else {
|
|
|
warn(LD_DIR,"Wrong # of arguments to \"router\" (%d)",tok->n_args);
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
- tok = find_first_by_keyword(tokens, K_PORTS);
|
|
|
- if (tok && ports_set) {
|
|
|
- warn(LD_DIR,"Redundant ports line");
|
|
|
- goto err;
|
|
|
- } else if (tok) {
|
|
|
- if (tok->n_args != 3) {
|
|
|
- warn(LD_DIR,"Wrong # of arguments to \"ports\"");
|
|
|
- goto err;
|
|
|
- }
|
|
|
- router->or_port =
|
|
|
- (uint16_t) tor_parse_long(tok->args[0],10,0,65535,NULL,NULL);
|
|
|
- router->dir_port =
|
|
|
- (uint16_t) tor_parse_long(tok->args[2],10,0,65535,NULL,NULL);
|
|
|
- ports_set = 1;
|
|
|
- }
|
|
|
-
|
|
|
tok = find_first_by_keyword(tokens, K_BANDWIDTH);
|
|
|
- if (tok && bw_set) {
|
|
|
- warn(LD_DIR,"Redundant bandwidth line");
|
|
|
+ if (!tok) {
|
|
|
+ warn(LD_DIR,"No bandwidth declared; failing.");
|
|
|
goto err;
|
|
|
- } else if (tok) {
|
|
|
+ } else {
|
|
|
if (tok->n_args < 3) {
|
|
|
- /* XXXX Once 0.0.7 is *really* dead, restore this warning to its old
|
|
|
- * form */
|
|
|
- warn(LD_DIR,"Not enough arguments to \"bandwidth\": must be an obsolete "
|
|
|
- " server. Rejecting one server (nickname '%s').", router->nickname);
|
|
|
+ warn(LD_DIR,"Not enough arguments to \"bandwidth\" in server descriptor.");
|
|
|
goto err;
|
|
|
}
|
|
|
router->bandwidthrate =
|
|
@@ -811,7 +786,6 @@ router_parse_entry_from_string(const char *s, const char *end)
|
|
|
tor_parse_long(tok->args[1],10,0,INT_MAX,NULL,NULL);
|
|
|
router->bandwidthcapacity =
|
|
|
tor_parse_long(tok->args[2],10,0,INT_MAX,NULL,NULL);
|
|
|
- bw_set = 1;
|
|
|
}
|
|
|
|
|
|
if ((tok = find_first_by_keyword(tokens, K_UPTIME))) {
|
|
@@ -928,14 +902,6 @@ router_parse_entry_from_string(const char *s, const char *end)
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
- if (!ports_set) {
|
|
|
- warn(LD_DIR,"No ports declared; failing.");
|
|
|
- goto err;
|
|
|
- }
|
|
|
- if (!bw_set) {
|
|
|
- warn(LD_DIR,"No bandwidth declared; failing.");
|
|
|
- goto err;
|
|
|
- }
|
|
|
if (!router->or_port) {
|
|
|
warn(LD_DIR,"or_port unreadable or 0. Failing.");
|
|
|
goto err;
|