Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ZerXes
Tor
Commits
975bb680
Commit
975bb680
authored
Nov 20, 2003
by
Roger Dingledine
Browse files
simplify: options.OnionRouter==1 iff options.ORPort>0
svn:r857
parent
84fffd36
Changes
7
Hide whitespace changes
Inline
Side-by-side
src/or/circuit.c
View file @
975bb680
...
...
@@ -748,7 +748,7 @@ int circuit_establish_circuit(void) {
if
(
!
n_conn
||
n_conn
->
state
!=
OR_CONN_STATE_OPEN
)
{
/* not currently connected */
circ
->
n_addr
=
firsthop
->
addr
;
circ
->
n_port
=
firsthop
->
or_port
;
if
(
options
.
O
nionRouter
)
{
/* we would be connected if he were up.
but
he's not. */
if
(
options
.
O
RPort
)
{
/* we would be connected if he were up.
and
he's not. */
log_fn
(
LOG_INFO
,
"Route's firsthop isn't connected."
);
circuit_close
(
circ
);
return
-
1
;
...
...
src/or/config.c
View file @
975bb680
...
...
@@ -182,7 +182,6 @@ static void config_assign(or_options_t *options, struct config_line *list) {
config_compare
(
list
,
"ORPort"
,
CONFIG_TYPE_INT
,
&
options
->
ORPort
)
||
config_compare
(
list
,
"ORBindAddress"
,
CONFIG_TYPE_STRING
,
&
options
->
ORBindAddress
)
||
config_compare
(
list
,
"OnionRouter"
,
CONFIG_TYPE_BOOL
,
&
options
->
OnionRouter
)
||
config_compare
(
list
,
"PidFile"
,
CONFIG_TYPE_STRING
,
&
options
->
PidFile
)
||
config_compare
(
list
,
"PathlenCoinWeight"
,
CONFIG_TYPE_DOUBLE
,
&
options
->
PathlenCoinWeight
)
||
...
...
@@ -283,7 +282,6 @@ int getconfig(int argc, char **argv, or_options_t *options) {
static
int
backup_argc
;
char
*
previous_pidfile
=
NULL
;
int
previous_runasdaemon
=
0
;
int
previous_onionrouter
=
-
1
;
if
(
first_load
)
{
/* first time we're called. save commandline args */
backup_argv
=
argv
;
...
...
@@ -296,7 +294,6 @@ int getconfig(int argc, char **argv, or_options_t *options) {
/* record some previous values, so we can fail if they change */
previous_pidfile
=
tor_strdup
(
options
->
PidFile
);
previous_runasdaemon
=
options
->
RunAsDaemon
;
previous_onionrouter
=
options
->
OnionRouter
;
free_options
(
options
);
}
init_options
(
options
);
...
...
@@ -349,11 +346,6 @@ int getconfig(int argc, char **argv, or_options_t *options) {
log_fn
(
LOG_WARN
,
"During reload, change from RunAsDaemon=1 to =0 not allowed. Failing."
);
return
-
1
;
}
if
(
previous_onionrouter
>=
0
&&
previous_onionrouter
!=
options
->
OnionRouter
)
{
log_fn
(
LOG_WARN
,
"During reload, OnionRouter changed from %d to %d. Failing."
,
previous_onionrouter
,
options
->
OnionRouter
);
return
-
1
;
}
if
(
options
->
LogLevel
)
{
if
(
!
strcmp
(
options
->
LogLevel
,
"err"
))
...
...
@@ -380,18 +372,13 @@ int getconfig(int argc, char **argv, or_options_t *options) {
result
=
-
1
;
}
if
(
options
->
OnionRouter
&&
options
->
ORPort
==
0
)
{
log
(
LOG_WARN
,
"If OnionRouter is set, then ORPort must be positive."
);
result
=
-
1
;
}
if
(
options
->
OnionRouter
&&
options
->
DataDirectory
==
NULL
)
{
log
(
LOG_WARN
,
"DataDirectory option required for OnionRouter, but not found."
);
if
(
options
->
ORPort
&&
options
->
DataDirectory
==
NULL
)
{
log
(
LOG_WARN
,
"DataDirectory option required if ORPort is set, but not found."
);
result
=
-
1
;
}
if
(
options
->
O
nionRouter
&&
options
->
Nickname
==
NULL
)
{
log_fn
(
LOG_WARN
,
"Nickname required
for OnionRouter
, but not found."
);
if
(
options
->
O
RPort
&&
options
->
Nickname
==
NULL
)
{
log_fn
(
LOG_WARN
,
"Nickname required
if ORPort is set
, but not found."
);
result
=
-
1
;
}
...
...
src/or/connection_or.c
View file @
975bb680
...
...
@@ -186,7 +186,7 @@ static int connection_tls_finish_handshake(connection_t *conn) {
connection_watch_events
(
conn
,
POLLIN
);
log_fn
(
LOG_DEBUG
,
"tls handshake done. verifying."
);
if
(
!
tor_tls_peer_has_cert
(
conn
->
tls
))
{
/* It's an OP. */
if
(
options
.
O
nionRouter
)
{
/* I'm an OR; good. */
if
(
options
.
O
RPort
)
{
/* I'm an OR; good. */
conn
->
receiver_bucket
=
conn
->
bandwidth
=
DEFAULT_BANDWIDTH_OP
;
return
0
;
}
else
{
/* Neither side sent a certificate: ouch. */
...
...
@@ -236,7 +236,7 @@ static int connection_tls_finish_handshake(connection_t *conn) {
nickname
,
conn
->
nickname
);
return
-
1
;
}
if
(
!
options
.
O
nionRouter
)
{
/* If I'm an OP... */
if
(
!
options
.
O
RPort
)
{
/* If I'm an OP... */
conn
->
receiver_bucket
=
conn
->
bandwidth
=
DEFAULT_BANDWIDTH_OP
;
circuit_n_conn_open
(
conn
);
/* send the pending creates, if any. */
}
...
...
src/or/directory.c
View file @
975bb680
...
...
@@ -125,7 +125,7 @@ int connection_dir_process_inbuf(connection_t *conn) {
}
else
{
log_fn
(
LOG_INFO
,
"updated routers."
);
}
if
(
options
.
O
nionRouter
)
{
/* connect to them all */
if
(
options
.
O
RPort
)
{
/* connect to them all */
router_retry_connections
();
}
return
-
1
;
...
...
src/or/main.c
View file @
975bb680
...
...
@@ -292,7 +292,7 @@ static void run_connection_housekeeping(int i, time_t now) {
return
;
if
(
now
>=
conn
->
timestamp_lastwritten
+
options
.
KeepalivePeriod
)
{
if
((
!
options
.
O
nionRouter
&&
!
circuit_get_by_conn
(
conn
))
||
if
((
!
options
.
O
RPort
&&
!
circuit_get_by_conn
(
conn
))
||
(
!
connection_state_is_open
(
conn
)))
{
/* we're an onion proxy, with no circuits; or our handshake has expired. kill it. */
log_fn
(
LOG_INFO
,
"Expiring connection to %d (%s:%d)."
,
...
...
@@ -322,7 +322,7 @@ static void run_scheduled_events(time_t now) {
* our descriptor (if any). */
if
(
time_to_fetch_directory
<
now
)
{
/* it's time to fetch a new directory and/or post our descriptor */
if
(
options
.
O
nionRouter
)
{
if
(
options
.
O
RPort
)
{
router_rebuild_descriptor
();
router_upload_desc_to_dirservers
();
}
...
...
@@ -485,7 +485,7 @@ static int init_keys(void)
crypto_pk_env_t
*
prkey
;
/* OP's don't need keys. Just initialize the TLS context.*/
if
(
!
options
.
O
nionRouter
)
{
if
(
!
options
.
O
RPort
)
{
assert
(
!
options
.
DirPort
);
if
(
tor_tls_context_new
(
NULL
,
0
,
NULL
)
<
0
)
{
log_fn
(
LOG_ERR
,
"Error creating TLS context for OP."
);
...
...
@@ -652,7 +652,7 @@ static int do_main_loop(void) {
return
-
1
;
}
if
(
options
.
O
nionRouter
)
{
if
(
options
.
O
RPort
)
{
cpu_init
();
/* launch cpuworkers. Need to do this *after* we've read the onion key. */
router_upload_desc_to_dirservers
();
/* upload our descriptor to all dirservers */
}
...
...
@@ -674,7 +674,7 @@ static int do_main_loop(void) {
please_dumpstats
=
0
;
}
if
(
please_reset
)
{
log_fn
(
LOG_
INFO
,
"Hupped
. Reloading config."
);
log_fn
(
LOG_
WARN
,
"Received sighup
. Reloading config."
);
/* first, reload config variables, in case they've changed */
if
(
init_from_config
(
0
,
NULL
)
<
0
)
{
/* no need to provide argc/v, they've been cached inside init_from_config */
...
...
@@ -828,7 +828,7 @@ int tor_main(int argc, char *argv[]) {
if
(
init_from_config
(
argc
,
argv
)
<
0
)
return
-
1
;
if
(
options
.
O
nionRouter
)
{
/* only spawn dns handlers if we're a router */
if
(
options
.
O
RPort
)
{
/* only spawn dns handlers if we're a router */
dns_init
();
/* initialize the dns resolve tree, and spawn workers */
}
if
(
options
.
SocksPort
)
{
...
...
src/or/onion.c
View file @
975bb680
...
...
@@ -386,7 +386,7 @@ static int count_acceptable_routers(routerinfo_t **rarray, int rarray_len) {
log_fn
(
LOG_DEBUG
,
"Nope, the directory says %d is not running."
,
i
);
goto
next_i_loop
;
}
if
(
options
.
O
nionRouter
)
{
if
(
options
.
O
RPort
)
{
conn
=
connection_exact_get_by_addr_port
(
rarray
[
i
]
->
addr
,
rarray
[
i
]
->
or_port
);
if
(
!
conn
||
conn
->
type
!=
CONN_TYPE_OR
||
conn
->
state
!=
OR_CONN_STATE_OPEN
)
{
log_fn
(
LOG_DEBUG
,
"Nope, %d is not connected."
,
i
);
...
...
@@ -457,6 +457,7 @@ int onion_extend_cpath(crypt_path_t **head_ptr, cpath_build_state_t *state, rout
return
-
1
;
}
start:
/* XXX through each of these, don't pick nodes that are down */
if
(
cur_len
==
0
)
{
/* picking entry node */
log_fn
(
LOG_DEBUG
,
"Contemplating first hop: random choice."
);
choice
=
rarray
[
crypto_pseudo_rand_int
(
rarray_len
)];
...
...
@@ -474,7 +475,7 @@ int onion_extend_cpath(crypt_path_t **head_ptr, cpath_build_state_t *state, rout
!
strcasecmp
(
choice
->
nickname
,
state
->
chosen_exit
))
{
goto
again
;
}
for
(
i
=
0
,
cpath
=
*
head_ptr
;
i
<
cur_len
;
++
i
,
cpath
=
cpath
->
next
)
{
r
=
router_get_by_addr_port
(
cpath
->
addr
,
cpath
->
port
);
if
((
r
&&
!
crypto_pk_cmp_keys
(
r
->
onion_pkey
,
choice
->
onion_pkey
))
...
...
@@ -482,7 +483,7 @@ int onion_extend_cpath(crypt_path_t **head_ptr, cpath_build_state_t *state, rout
!
strcasecmp
(
choice
->
nickname
,
state
->
chosen_exit
))
||
(
cpath
->
addr
==
choice
->
addr
&&
cpath
->
port
==
choice
->
or_port
)
||
(
options
.
O
nionRouter
&&
||
(
options
.
O
RPort
&&
!
(
connection_twin_get_by_addr_port
(
choice
->
addr
,
choice
->
or_port
))))
{
goto
again
;
...
...
src/or/or.h
View file @
975bb680
...
...
@@ -451,7 +451,6 @@ typedef struct {
int
SocksPort
;
int
DirPort
;
int
MaxConn
;
int
OnionRouter
;
int
TrafficShaping
;
int
LinkPadding
;
int
IgnoreVersion
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment