[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-bugs] #11307 [Tor]: connection_handle_event_cb() should handle orconns correctly even when not in OR_CONN_STATE_CONNECTING
#11307: connection_handle_event_cb() should handle orconns correctly even when not
in OR_CONN_STATE_CONNECTING
--------------------+------------------------------------
Reporter: andrea | Owner: andrea
Type: defect | Status: new
Priority: normal | Milestone: Tor: 0.2.???
Component: Tor | Version: Tor: 0.2.5.3-alpha
Keywords: | Actual Points:
Parent ID: | Points:
--------------------+------------------------------------
This code is in connection_handle_event_cb():
{{{
if (conn->type == CONN_TYPE_OR &&
conn->state == OR_CONN_STATE_CONNECTING) {
connection_or_connect_failed(TO_OR_CONN(conn),
errno_to_orconn_end_reason(socket_error),
tor_socket_strerror(socket_error));
}
}}}
It should be something like this:
{{{
if (conn->type == CONN_TYPE_OR) {
if (conn->state == OR_CONN_STATE_CONNECTING) {
connection_or_connect_failed(TO_OR_CONN(conn),
errno_to_orconn_end_reason(socket_error),
tor_socket_strerror(socket_error));
} else {
connection_or_close_for_error(TO_OR_CONN(conn));
}
}
}}}
As it stands, if conn->state != OR_CONN_STATE_CONNECTING this code will
incorrectly treat orconns as generic conns and call
connection_mark_for_close() on them without properly notifying the channel
layer.
Note that since this code is specific to bufferevents which do not
currently work, this bug cannot be demonstrated in any working build of
Tor, so I'm assigning it to the 0.2.?? milestone.
Created pursuant to connection_mark_for_close() audit task #7472.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/11307>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs