aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/config.c3
-rw-r--r--src/or/main.c14
-rw-r--r--src/or/or.h1
3 files changed, 12 insertions, 6 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 8c42480ee..4212cdff7 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -192,6 +192,7 @@ static void config_assign(or_options_t *options, struct config_line *list) {
config_compare(list, "DataDirectory", CONFIG_TYPE_STRING, &options->DataDirectory) ||
config_compare(list, "RouterFile", CONFIG_TYPE_STRING, &options->RouterFile) ||
config_compare(list, "Nickname", CONFIG_TYPE_STRING, &options->Nickname) ||
+ config_compare(list, "Address", CONFIG_TYPE_STRING, &options->Address) ||
/* int options */
config_compare(list, "MaxConn", CONFIG_TYPE_INT, &options->MaxConn) ||
@@ -277,7 +278,7 @@ int getconfig(int argc, char **argv, or_options_t *options) {
/* Validate options */
if(options->LogLevel) {
- else if(!strcmp(options->LogLevel,"err"))
+ if(!strcmp(options->LogLevel,"err"))
options->loglevel = LOG_ERR;
else if(!strcmp(options->LogLevel,"warning"))
options->loglevel = LOG_WARNING;
diff --git a/src/or/main.c b/src/or/main.c
index 662358c8e..3ce121c9e 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -938,15 +938,19 @@ const char *router_get_my_descriptor(void) {
static int init_descriptor(void) {
routerinfo_t *ri;
char localhostname[256];
+ char *address = options.Address;
- if(gethostname(localhostname,sizeof(localhostname)) < 0) {
- log_fn(LOG_WARNING,"Error obtaining local hostname");
- return -1;
+ if(!address) { /* if not specified in config, we find a default */
+ if(gethostname(localhostname,sizeof(localhostname)) < 0) {
+ log_fn(LOG_WARNING,"Error obtaining local hostname");
+ return -1;
+ }
+ address = localhostname;
}
ri = tor_malloc(sizeof(routerinfo_t));
- ri->address = strdup(localhostname);
+ ri->address = strdup(address);
ri->nickname = strdup(options.Nickname);
- /* No need to set addr. ???? */
+ /* No need to set addr. */
ri->or_port = options.ORPort;
ri->ap_port = options.APPort;
ri->dir_port = options.DirPort;
diff --git a/src/or/or.h b/src/or/or.h
index 474ffa230..965c6ebac 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -408,6 +408,7 @@ typedef struct {
char *DataDirectory;
char *RouterFile;
char *Nickname;
+ char *Address;
double CoinWeight;
int Daemon;
int ORPort;