[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] make it warn about internal IPs not only if we had to guess,
- To: or-cvs@freehaven.net
- Subject: [or-cvs] make it warn about internal IPs not only if we had to guess,
- From: arma@seul.org (Roger Dingledine)
- Date: Sun, 14 Mar 2004 23:57:27 -0500 (EST)
- Delivered-to: archiver@seul.org
- Delivered-to: or-cvs-outgoing@seul.org
- Delivered-to: or-cvs@seul.org
- Delivery-date: Sun, 14 Mar 2004 23:57:53 -0500
- Reply-to: or-dev@freehaven.net
- Sender: owner-or-cvs@freehaven.net
Update of /home/or/cvsroot/src/or
In directory moria.mit.edu:/home2/arma/work/onion/cvs/src/or
Modified Files:
config.c
Log Message:
make it warn about internal IPs not only if we had to guess,
but also if they used a hostname rather than an IP
Index: config.c
===================================================================
RCS file: /home/or/cvsroot/src/or/config.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -d -r1.97 -r1.98
--- config.c 15 Mar 2004 04:04:16 -0000 1.97
+++ config.c 15 Mar 2004 04:57:24 -0000 1.98
@@ -349,10 +349,10 @@
struct in_addr in;
struct hostent *rent;
char localhostname[256];
- int guessed=0;
+ int explicit_ip=1;
if(!options->Address) { /* then we need to guess our address */
- guessed = 1;
+ explicit_ip = 0; /* it's implicit */
if(gethostname(localhostname,sizeof(localhostname)) < 0) {
log_fn(LOG_WARN,"Error obtaining local hostname");
@@ -371,16 +371,20 @@
/* 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;
+ if(tor_inet_aton(options->Address, &in) == 0) {
+ /* then we have to resolve it */
+ explicit_ip = 0;
+ 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);
}
- assert(rent->h_length == 4);
- memcpy(&in.s_addr, rent->h_addr,rent->h_length);
- if(guessed==1 && is_internal_IP(htonl(in.s_addr))) {
+ if(!explicit_ip && 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.",
+ "Please set the Address config option to be the IP you want to use.",
options->Address, inet_ntoa(in));
return -1;
}