mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
Use a more helpful log message when we can't find a proxy.
This commit is contained in:
parent
f00a8b4307
commit
5dc9acb5e5
@ -4972,6 +4972,21 @@ find_bridge_by_digest(const char *digest)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *
|
||||
find_transport_name_by_bridge_addrport(const tor_addr_t *addr, uint16_t port)
|
||||
{
|
||||
if (!bridge_list)
|
||||
return NULL;
|
||||
|
||||
SMARTLIST_FOREACH_BEGIN(bridge_list, const bridge_info_t *, bridge) {
|
||||
if (tor_addr_eq(&bridge->addr, addr) &&
|
||||
(bridge->port == port))
|
||||
return bridge->transport_name;
|
||||
} SMARTLIST_FOREACH_END(bridge);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/** If <b>addr</b> and <b>port</b> match the address and port of a
|
||||
* bridge of ours that uses pluggable transports, place its transport
|
||||
* in <b>transport</b>.
|
||||
|
@ -157,6 +157,9 @@ void transport_free(transport_t *transport);
|
||||
transport_t *transport_new(const tor_addr_t *addr, uint16_t port,
|
||||
const char *name, int socks_ver);
|
||||
|
||||
const char *find_transport_name_by_bridge_addrport(const tor_addr_t *addr,
|
||||
uint16_t port);
|
||||
|
||||
int find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port,
|
||||
const transport_t **transport);
|
||||
transport_t *transport_get_by_name(const char *name);
|
||||
|
@ -1051,8 +1051,27 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port,
|
||||
conn->_base.proxy_state = PROXY_INFANT;
|
||||
}
|
||||
} else {
|
||||
log_warn(LD_GENERAL, "Tried to connect through proxy, but proxy address "
|
||||
"could not be found.");
|
||||
/* get_proxy_addrport() might fail if we have a Bridge line that
|
||||
references a transport, but no ClientTransportPlugin lines
|
||||
defining its transport proxy. If this is the case, let's try to
|
||||
output a useful log message to the user. */
|
||||
const char *transport_name =
|
||||
find_transport_name_by_bridge_addrport(&TO_CONN(conn)->addr,
|
||||
TO_CONN(conn)->port);
|
||||
|
||||
if (transport_name) {
|
||||
log_warn(LD_GENERAL, "We were supposed to connect to bridge '%s:%u' "
|
||||
"using pluggable transport '%s', but it seems that we can't "
|
||||
"find a pluggable transport proxy supporting '%s'. Please make "
|
||||
"sure that your configuration file is valid.",
|
||||
fmt_addr(&TO_CONN(conn)->addr), TO_CONN(conn)->port,
|
||||
transport_name, transport_name);
|
||||
} else {
|
||||
log_warn(LD_GENERAL, "Tried to connect to '%s:%u' through a proxy, but "
|
||||
"the proxy address could not be found.",
|
||||
fmt_addr(&TO_CONN(conn)->addr), TO_CONN(conn)->port);
|
||||
}
|
||||
|
||||
connection_free(TO_CONN(conn));
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user