Loading trunk/src/or/config.c +36 −0 Changes for trunk/src/or/config.c: 36 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -524,6 +524,42 @@ int getconfig(int argc, char **argv, or_options_t *options) { result = -1; } if(options->ORPort) { /* get an IP for ourselves */ struct in_addr in; struct hostent *rent; char localhostname[256]; if(!options->Address) { /* then we need to guess our address */ if(gethostname(localhostname,sizeof(localhostname)) < 0) { log_fn(LOG_WARN,"Error obtaining local hostname"); return -1; } #if 0 /* don't worry about complaining, as long as it resolves */ if(!strchr(localhostname,'.')) { log_fn(LOG_WARN,"fqdn '%s' has only one element. Misconfigured machine?",address); log_fn(LOG_WARN,"Try setting the Address line in your config file."); return -1; } #endif options->Address = tor_strdup(localhostname); log_fn(LOG_DEBUG,"Guessed local host name as '%s'",options->Address); } /* now we know options->Address is set. resolve it and keep only the IP */ rent = (struct hostent *)gethostbyname(options->Address); if (!rent) { log_fn(LOG_WARN,"Could not resolve Address %s. Failing.", options->Address); return -1; } assert(rent->h_length == 4); memcpy(&in.s_addr, rent->h_addr,rent->h_length); tor_free(options->Address); options->Address = tor_strdup(inet_ntoa(in)); log_fn(LOG_DEBUG,"Resolved Address to %s.", options->Address); } if(options->SocksPort < 0) { log(LOG_WARN,"SocksPort option can't be negative."); result = -1; Loading trunk/src/or/router.c +2 −16 Changes for trunk/src/or/router.c: 2 added lines, 16 removed lines. Original line number Diff line number Diff line Loading @@ -321,23 +321,9 @@ const char *router_get_my_descriptor(void) { int router_rebuild_descriptor(void) { routerinfo_t *ri; char localhostname[256]; char *address = options.Address; if(!address) { /* if not specified in config, we find a default */ if(gethostname(localhostname,sizeof(localhostname)) < 0) { log_fn(LOG_WARN,"Error obtaining local hostname"); return -1; } address = localhostname; if(!strchr(address,'.')) { log_fn(LOG_WARN,"fqdn '%s' has only one element. Misconfigured machine?",address); log_fn(LOG_WARN,"Try setting the Address line in your config file."); return -1; } } ri = tor_malloc(sizeof(routerinfo_t)); ri->address = tor_strdup(address); ri = tor_malloc_zero(sizeof(routerinfo_t)); ri->address = tor_strdup(options.Address); ri->nickname = tor_strdup(options.Nickname); /* No need to set addr. */ ri->or_port = options.ORPort; Loading trunk/src/or/routerlist.c +2 −1 Changes for trunk/src/or/routerlist.c: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -377,7 +377,8 @@ router_resolve(routerinfo_t *router) rent = (struct hostent *)gethostbyname(router->address); if (!rent) { log_fn(LOG_WARN,"Could not get address for router %s.",router->address); log_fn(LOG_WARN,"Could not get address for router %s (%s).", router->address, router->nickname); return -1; } assert(rent->h_length == 4); Loading Loading
trunk/src/or/config.c +36 −0 Changes for trunk/src/or/config.c: 36 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -524,6 +524,42 @@ int getconfig(int argc, char **argv, or_options_t *options) { result = -1; } if(options->ORPort) { /* get an IP for ourselves */ struct in_addr in; struct hostent *rent; char localhostname[256]; if(!options->Address) { /* then we need to guess our address */ if(gethostname(localhostname,sizeof(localhostname)) < 0) { log_fn(LOG_WARN,"Error obtaining local hostname"); return -1; } #if 0 /* don't worry about complaining, as long as it resolves */ if(!strchr(localhostname,'.')) { log_fn(LOG_WARN,"fqdn '%s' has only one element. Misconfigured machine?",address); log_fn(LOG_WARN,"Try setting the Address line in your config file."); return -1; } #endif options->Address = tor_strdup(localhostname); log_fn(LOG_DEBUG,"Guessed local host name as '%s'",options->Address); } /* now we know options->Address is set. resolve it and keep only the IP */ rent = (struct hostent *)gethostbyname(options->Address); if (!rent) { log_fn(LOG_WARN,"Could not resolve Address %s. Failing.", options->Address); return -1; } assert(rent->h_length == 4); memcpy(&in.s_addr, rent->h_addr,rent->h_length); tor_free(options->Address); options->Address = tor_strdup(inet_ntoa(in)); log_fn(LOG_DEBUG,"Resolved Address to %s.", options->Address); } if(options->SocksPort < 0) { log(LOG_WARN,"SocksPort option can't be negative."); result = -1; Loading
trunk/src/or/router.c +2 −16 Changes for trunk/src/or/router.c: 2 added lines, 16 removed lines. Original line number Diff line number Diff line Loading @@ -321,23 +321,9 @@ const char *router_get_my_descriptor(void) { int router_rebuild_descriptor(void) { routerinfo_t *ri; char localhostname[256]; char *address = options.Address; if(!address) { /* if not specified in config, we find a default */ if(gethostname(localhostname,sizeof(localhostname)) < 0) { log_fn(LOG_WARN,"Error obtaining local hostname"); return -1; } address = localhostname; if(!strchr(address,'.')) { log_fn(LOG_WARN,"fqdn '%s' has only one element. Misconfigured machine?",address); log_fn(LOG_WARN,"Try setting the Address line in your config file."); return -1; } } ri = tor_malloc(sizeof(routerinfo_t)); ri->address = tor_strdup(address); ri = tor_malloc_zero(sizeof(routerinfo_t)); ri->address = tor_strdup(options.Address); ri->nickname = tor_strdup(options.Nickname); /* No need to set addr. */ ri->or_port = options.ORPort; Loading
trunk/src/or/routerlist.c +2 −1 Changes for trunk/src/or/routerlist.c: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -377,7 +377,8 @@ router_resolve(routerinfo_t *router) rent = (struct hostent *)gethostbyname(router->address); if (!rent) { log_fn(LOG_WARN,"Could not get address for router %s.",router->address); log_fn(LOG_WARN,"Could not get address for router %s (%s).", router->address, router->nickname); return -1; } assert(rent->h_length == 4); Loading