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;
|
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
|
/** 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
|
* bridge of ours that uses pluggable transports, place its transport
|
||||||
* in <b>transport</b>.
|
* 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,
|
transport_t *transport_new(const tor_addr_t *addr, uint16_t port,
|
||||||
const char *name, int socks_ver);
|
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,
|
int find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port,
|
||||||
const transport_t **transport);
|
const transport_t **transport);
|
||||||
transport_t *transport_get_by_name(const char *name);
|
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;
|
conn->_base.proxy_state = PROXY_INFANT;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log_warn(LD_GENERAL, "Tried to connect through proxy, but proxy address "
|
/* get_proxy_addrport() might fail if we have a Bridge line that
|
||||||
"could not be found.");
|
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));
|
connection_free(TO_CONN(conn));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user