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
84a34edf
Commit
84a34edf
authored
Oct 13, 2002
by
Roger Dingledine
Browse files
expire unfinished handshakes too
don't list non-open ORs in the directory svn:r134
parent
74787aa2
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/or/connection.c
View file @
84a34edf
...
...
@@ -103,8 +103,11 @@ connection_t *connection_new(int type) {
conn
->
receiver_bucket
=
10240
;
/* should be enough to do the handshake */
conn
->
bandwidth
=
conn
->
receiver_bucket
/
10
;
/* give it a default */
conn
->
timestamp_created
=
now
.
tv_sec
;
conn
->
timestamp_lastread
=
now
.
tv_sec
;
conn
->
timestamp_lastwritten
=
now
.
tv_sec
;
if
(
connection_speaks_cells
(
conn
))
{
conn
->
f_crypto
=
crypto_new_cipher_env
(
CRYPTO_CIPHER_DES
);
if
(
!
conn
->
f_crypto
)
{
...
...
@@ -224,6 +227,8 @@ int connection_handle_listener_read(connection_t *conn, int new_type, int new_st
}
newconn
->
address
=
strdup
(
inet_ntoa
(
remote
.
sin_addr
));
/* remember the remote address */
newconn
->
addr
=
ntohl
(
remote
.
sin_addr
.
s_addr
);
newconn
->
port
=
ntohs
(
remote
.
sin_port
);
if
(
connection_add
(
newconn
)
<
0
)
{
/* no space, forget it */
connection_free
(
newconn
);
...
...
src/or/connection_ap.c
View file @
84a34edf
...
...
@@ -346,7 +346,8 @@ int ap_handshake_socks_reply(connection_t *conn, char result) {
socks4_info
.
destport
[
0
]
=
socks4_info
.
destport
[
1
]
=
0
;
socks4_info
.
destip
[
0
]
=
socks4_info
.
destip
[
1
]
=
socks4_info
.
destip
[
2
]
=
socks4_info
.
destip
[
3
]
=
0
;
connection_write_to_buf
((
char
*
)
&
socks4_info
,
sizeof
(
socks4_t
),
conn
);
if
(
connection_write_to_buf
((
char
*
)
&
socks4_info
,
sizeof
(
socks4_t
),
conn
)
<
0
)
return
-
1
;
return
connection_flush_buf
(
conn
);
/* try to flush it, in case we're about to close the conn */
}
...
...
src/or/main.c
View file @
84a34edf
...
...
@@ -347,13 +347,10 @@ int prepare_for_poll(int *timeout) {
tmpconn
=
connection_array
[
i
];
if
(
!
connection_speaks_cells
(
tmpconn
))
continue
;
/* this conn type doesn't send cells */
if
(
!
connection_state_is_open
(
tmpconn
))
{
continue
;
/* only conns in state 'open' need a keepalive */
/* XXX should time-out unfinished connections someday too */
}
if
(
now
.
tv_sec
>=
tmpconn
->
timestamp_lastwritten
+
options
.
KeepalivePeriod
)
{
if
(
!
(
options
.
Role
&
ROLE_OR_CONNECT_ALL
)
&&
!
circuit_get_by_conn
(
tmpconn
))
{
/* we're an onion proxy, with no circuits. kill it. */
if
((
!
(
options
.
Role
&
ROLE_OR_CONNECT_ALL
)
&&
!
circuit_get_by_conn
(
tmpconn
))
||
(
!
connection_state_is_open
(
tmpconn
)))
{
/* we're an onion proxy, with no circuits; or our handshake has expired. kill it. */
log
(
LOG_DEBUG
,
"prepare_for_poll(): Expiring connection to %d (%s:%d)."
,
i
,
tmpconn
->
address
,
tmpconn
->
port
);
tmpconn
->
marked_for_close
=
1
;
...
...
@@ -363,7 +360,8 @@ int prepare_for_poll(int *timeout) {
// tmpconn->address, tmpconn->port);
memset
(
&
cell
,
0
,
sizeof
(
cell_t
));
cell
.
command
=
CELL_PADDING
;
connection_write_cell_to_buf
(
&
cell
,
tmpconn
);
if
(
connection_write_cell_to_buf
(
&
cell
,
tmpconn
)
<
0
)
tmpconn
->
marked_for_close
=
1
;
}
}
if
(
!
tmpconn
->
marked_for_close
&&
...
...
@@ -603,10 +601,11 @@ void dump_directory_to_string(char *s, int maxlen) {
int
written
;
/* first write my own info */
/* XXX should check for errors here too */
written
=
dump_router_to_string
(
s
,
maxlen
,
my_routerinfo
);
maxlen
-=
written
;
s
+=
written
;
if
(
my_routerinfo
)
{
written
=
dump_router_to_string
(
s
,
maxlen
,
my_routerinfo
);
maxlen
-=
written
;
s
+=
written
;
}
/* now write info for other routers */
for
(
i
=
0
;
i
<
nfds
;
i
++
)
{
...
...
@@ -614,10 +613,12 @@ void dump_directory_to_string(char *s, int maxlen) {
if
(
conn
->
type
!=
CONN_TYPE_OR
)
continue
;
/* we only want to list ORs */
if
(
conn
->
state
!=
OR_CONN_STATE_OPEN
)
continue
;
/* we only want to list ones that successfully handshaked */
router
=
router_get_by_addr_port
(
conn
->
addr
,
conn
->
port
);
if
(
!
router
)
{
log
(
LOG_ERR
,
"dump_directory_to_string(): couldn't find router %d:%d!"
,
conn
->
addr
,
conn
->
port
);
return
;
continue
;
}
written
=
dump_router_to_string
(
s
,
maxlen
,
router
);
...
...
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