mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-01 08:03:31 +01:00
Look at the right errno when sending reason for connect() failure
In afe414 (tor-0.1.0.1-rc~173), when we moved to connection_edge_end_errno(), we used it in handling errors from connection_connect(). That's not so good, since by the time connection_connect() returns, the socket is no longer set, and we're supposed to be looking at the socket_errno return value from connection_connect() instead. So do what we should've done, and look at the socket_errno value that we get from connection_connect().
This commit is contained in:
parent
05887f10ff
commit
6a5b94de6c
6
changes/connect_err_reporting
Normal file
6
changes/connect_err_reporting
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
o Minor bugfixes:
|
||||||
|
- Be more careful about reporting the correct error from a failed
|
||||||
|
connect() operation. Under some circumstances, it was possible to
|
||||||
|
look at an incorrect value for errno when sending the end reason.
|
||||||
|
Bugfix on Tor-0.1.0.1-rc.
|
||||||
|
|
@ -2823,13 +2823,13 @@ connection_exit_connect(edge_connection_t *edge_conn)
|
|||||||
|
|
||||||
log_debug(LD_EXIT,"about to try connecting");
|
log_debug(LD_EXIT,"about to try connecting");
|
||||||
switch (connection_connect(conn, conn->address, addr, port, &socket_error)) {
|
switch (connection_connect(conn, conn->address, addr, port, &socket_error)) {
|
||||||
case -1:
|
case -1: {
|
||||||
/* XXX022 use socket_error below rather than trying to piece things
|
int reason = errno_to_stream_end_reason(socket_error);
|
||||||
* together from the current errno, which may have been clobbered. */
|
connection_edge_end(edge_conn, reason);
|
||||||
connection_edge_end_errno(edge_conn);
|
|
||||||
circuit_detach_stream(circuit_get_by_edge_conn(edge_conn), edge_conn);
|
circuit_detach_stream(circuit_get_by_edge_conn(edge_conn), edge_conn);
|
||||||
connection_free(conn);
|
connection_free(conn);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
case 0:
|
case 0:
|
||||||
conn->state = EXIT_CONN_STATE_CONNECTING;
|
conn->state = EXIT_CONN_STATE_CONNECTING;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user