diff --git a/src/or/config.c b/src/or/config.c index 8b73003106..69aea254c1 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -349,8 +349,10 @@ static int resolve_my_address(or_options_t *options) { struct in_addr in; struct hostent *rent; char localhostname[256]; + int guessed=0; if(!options->Address) { /* then we need to guess our address */ + guessed = 1; if(gethostname(localhostname,sizeof(localhostname)) < 0) { log_fn(LOG_WARN,"Error obtaining local hostname"); @@ -376,7 +378,7 @@ static int resolve_my_address(or_options_t *options) { } assert(rent->h_length == 4); memcpy(&in.s_addr, rent->h_addr,rent->h_length); - if(is_internal_IP(htonl(in.s_addr))) { + if(guessed==1 && is_internal_IP(htonl(in.s_addr))) { log_fn(LOG_WARN,"Address '%s' resolves to private IP '%s'. " "Please set the Address config option to be your public IP.", options->Address, inet_ntoa(in));