aboutsummaryrefslogtreecommitdiff
path: root/src/or/router.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-08-09 15:48:43 -0400
committerNick Mathewson <nickm@torproject.org>2012-08-09 15:48:43 -0400
commitdfe03d36c8749eb07e9bb2ea47e88ff05e9e3127 (patch)
tree37daa659761760dcd12e680bbe1b952cee40ea24 /src/or/router.c
parent91b52a259a271df7ceeea6d8bf7adbd4d7e15a6c (diff)
downloadtor-dfe03d36c8749eb07e9bb2ea47e88ff05e9e3127.tar.gz
tor-dfe03d36c8749eb07e9bb2ea47e88ff05e9e3127.zip
Don't infer we have a FooPort from the presence of a FooPort line
Thanks to the changes we started making with SocksPort and friends in 0.2.3.3-alpha, any of our code that did "if (options->Sockport)" became wrong, since "SocksPort 0" would make that test true whereas using the default SocksPort value would make it false. (We didn't actually do "if (options->SockPort)" but we did have tests for TransPort. When we moved DirPort, ORPort, and ControlPort over to the same system in 0.2.3.9-alpha, the problem got worse, since our code is littered with checks for DirPort and ORPort as booleans. This code renames the current linelist-based FooPort options to FooPort_lines, and adds new FooPort_set options which get set at parse-and-validate time on the or_options_t. FooPort_set is true iff we will actually try to open a listener of the given type. (I renamed the FooPort options rather than leave them alone so that every previous user of a FooPort would need to get inspected, and so that any new code that forgetfully uses FooPort will need fail to compile.) Fix for bug 6507.
Diffstat (limited to 'src/or/router.c')
-rw-r--r--src/or/router.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/or/router.c b/src/or/router.c
index 352c456f1f..38f1cdd495 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -797,7 +797,7 @@ int
check_whether_dirport_reachable(void)
{
const or_options_t *options = get_options();
- return !options->DirPort ||
+ return !options->DirPort_set ||
options->AssumeReachable ||
net_is_disabled() ||
can_reach_dir_port;
@@ -1115,7 +1115,8 @@ int
server_mode(const or_options_t *options)
{
if (options->ClientOnly) return 0;
- return (options->ORPort || options->ORListenAddress);
+ /* XXXX024 I believe we can kill off ORListenAddress here.*/
+ return (options->ORPort_set || options->ORListenAddress);
}
/** Return true iff we are trying to be a non-bridge server.