mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
start remembering X-Your-Address-Is hints even if you're
a client, so you can become a server more smoothly. svn:r8359
This commit is contained in:
parent
9af3175687
commit
e56dbb810f
@ -822,6 +822,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
|
||||
int skewed=0;
|
||||
int allow_partial = conn->_base.purpose == DIR_PURPOSE_FETCH_SERVERDESC;
|
||||
int was_compressed=0;
|
||||
char *guess;
|
||||
|
||||
switch (fetch_from_buf_http(conn->_base.inbuf,
|
||||
&headers, MAX_HEADERS_SIZE,
|
||||
@ -855,13 +856,11 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
|
||||
escaped(reason));
|
||||
|
||||
/* now check if it's got any hints for us about our IP address. */
|
||||
if (server_mode(get_options())) {
|
||||
char *guess = http_get_header(headers, X_ADDRESS_HEADER);
|
||||
guess = http_get_header(headers, X_ADDRESS_HEADER);
|
||||
if (guess) {
|
||||
router_new_address_suggestion(guess);
|
||||
tor_free(guess);
|
||||
}
|
||||
}
|
||||
|
||||
if (date_header > 0) {
|
||||
now = time(NULL);
|
||||
|
@ -970,6 +970,7 @@ router_new_address_suggestion(const char *suggestion)
|
||||
{
|
||||
uint32_t addr, cur;
|
||||
struct in_addr in;
|
||||
or_options_t *options = get_options();
|
||||
|
||||
/* first, learn what the IP address actually is */
|
||||
if (!tor_inet_aton(suggestion, &in)) {
|
||||
@ -980,7 +981,8 @@ router_new_address_suggestion(const char *suggestion)
|
||||
|
||||
log_debug(LD_DIR, "Got X-Your-Address-Is: %s.", suggestion);
|
||||
|
||||
if (resolve_my_address(LOG_INFO, get_options(), &cur, NULL) >= 0) {
|
||||
if (!server_mode(options) ||
|
||||
resolve_my_address(LOG_INFO, options, &cur, NULL) >= 0) {
|
||||
/* We're all set -- we already know our address. Great. */
|
||||
last_guessed_ip = cur; /* store it in case we need it later */
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user