diff --git a/src/or/config.c b/src/or/config.c index f540b1e55e..86836a4118 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -400,6 +400,7 @@ int getconfig(int argc, char **argv, or_options_t *options) { static int backup_argc; char *previous_pidfile = NULL; int previous_runasdaemon = 0; + int previous_orport = -1; int using_default_torrc; if(first_load) { /* first time we're called. save commandline args */ @@ -414,6 +415,7 @@ int getconfig(int argc, char **argv, or_options_t *options) { if(options->PidFile) previous_pidfile = tor_strdup(options->PidFile); previous_runasdaemon = options->RunAsDaemon; + previous_orport = options->ORPort; free_options(options); } init_options(options); @@ -476,6 +478,11 @@ int getconfig(int argc, char **argv, or_options_t *options) { return -1; } + if(previous_orport == 0 && options->ORPort > 0) { + log_fn(LOG_WARN,"During reload, change from ORPort=0 to =%d not allowed. Failing.",options->ORPort); + return -1; + } + if(options->LogLevel) { if(!strcmp(options->LogLevel,"err")) options->loglevel = LOG_ERR;