r6909@Kushana: nickm | 2006-07-26 13:05:58 -0400

Clean up wide lines from last patch.


svn:r6907
This commit is contained in:
Nick Mathewson 2006-07-26 19:07:37 +00:00
parent 4ff4577beb
commit ec82db6995
12 changed files with 128 additions and 73 deletions

View File

@ -692,7 +692,8 @@ circuit_extend(cell_t *cell, circuit_t *circ)
circ->n_conn = n_conn; circ->n_conn = n_conn;
memcpy(circ->n_conn_id_digest, n_conn->identity_digest, DIGEST_LEN); memcpy(circ->n_conn_id_digest, n_conn->identity_digest, DIGEST_LEN);
log_debug(LD_CIRC,"n_conn is %s:%u",n_conn->_base.address,n_conn->_base.port); log_debug(LD_CIRC,"n_conn is %s:%u",
n_conn->_base.address,n_conn->_base.port);
if (circuit_deliver_create_cell(circ, CELL_CREATE, onionskin) < 0) if (circuit_deliver_create_cell(circ, CELL_CREATE, onionskin) < 0)
return -1; return -1;

View File

@ -255,7 +255,8 @@ circuit_expire_building(time_t now)
if (victim->n_conn) if (victim->n_conn)
log_info(LD_CIRC,"Abandoning circ %s:%d:%d (state %d:%s, purpose %d)", log_info(LD_CIRC,"Abandoning circ %s:%d:%d (state %d:%s, purpose %d)",
victim->n_conn->_base.address, victim->n_port, victim->n_circ_id, victim->n_conn->_base.address, victim->n_port,
victim->n_circ_id,
victim->state, circuit_state_to_string(victim->state), victim->state, circuit_state_to_string(victim->state),
victim->purpose); victim->purpose);
else else
@ -296,7 +297,8 @@ circuit_remove_handled_ports(smartlist_t *needed_ports)
* Else return 0. * Else return 0.
*/ */
int int
circuit_stream_is_being_handled(edge_connection_t *conn, uint16_t port, int min) circuit_stream_is_being_handled(edge_connection_t *conn,
uint16_t port, int min)
{ {
circuit_t *circ; circuit_t *circ;
routerinfo_t *exitrouter; routerinfo_t *exitrouter;

View File

@ -2034,7 +2034,8 @@ connection_process_inbuf(connection_t *conn, int package_partial)
return connection_or_process_inbuf(TO_OR_CONN(conn)); return connection_or_process_inbuf(TO_OR_CONN(conn));
case CONN_TYPE_EXIT: case CONN_TYPE_EXIT:
case CONN_TYPE_AP: case CONN_TYPE_AP:
return connection_edge_process_inbuf(TO_EDGE_CONN(conn), package_partial); return connection_edge_process_inbuf(TO_EDGE_CONN(conn),
package_partial);
case CONN_TYPE_DIR: case CONN_TYPE_DIR:
return connection_dir_process_inbuf(TO_DIR_CONN(conn)); return connection_dir_process_inbuf(TO_DIR_CONN(conn));
case CONN_TYPE_DNSWORKER: case CONN_TYPE_DNSWORKER:

View File

@ -136,7 +136,8 @@ connection_edge_destroy(uint16_t circ_id, edge_connection_t *conn)
if (conn->_base.type == CONN_TYPE_AP) { if (conn->_base.type == CONN_TYPE_AP) {
connection_mark_unattached_ap(conn, END_STREAM_REASON_DESTROY); connection_mark_unattached_ap(conn, END_STREAM_REASON_DESTROY);
} else { } else {
conn->_base.edge_has_sent_end = 1; /* closing the circuit, nothing to send to */ /* closing the circuit, nothing to send an END to */
conn->_base.edge_has_sent_end = 1;
connection_mark_for_close(TO_CONN(conn)); connection_mark_for_close(TO_CONN(conn));
conn->_base.hold_open_until_flushed = 1; conn->_base.hold_open_until_flushed = 1;
} }
@ -240,7 +241,7 @@ connection_edge_finished_flushing(edge_connection_t *conn)
connection_stop_writing(TO_CONN(conn)); connection_stop_writing(TO_CONN(conn));
return 0; return 0;
default: default:
log_warn(LD_BUG,"BUG: called in unexpected state %d.", conn->_base.state); log_warn(LD_BUG,"BUG: called in unexpected state %d.",conn->_base.state);
tor_fragile_assert(); tor_fragile_assert();
return -1; return -1;
} }
@ -340,7 +341,8 @@ connection_ap_expire_beginning(void)
continue; continue;
conn = TO_EDGE_CONN(carray[i]); conn = TO_EDGE_CONN(carray[i]);
/* if it's an internal bridge connection, don't yell its status. */ /* if it's an internal bridge connection, don't yell its status. */
severity = (!conn->_base.addr && !conn->_base.port) ? LOG_INFO : LOG_NOTICE; severity = (!conn->_base.addr && !conn->_base.port)
? LOG_INFO : LOG_NOTICE;
if (conn->_base.state == AP_CONN_STATE_CONTROLLER_WAIT) { if (conn->_base.state == AP_CONN_STATE_CONTROLLER_WAIT) {
if (now - conn->_base.timestamp_lastread >= options->SocksTimeout) { if (now - conn->_base.timestamp_lastread >= options->SocksTimeout) {
log_fn(severity, LD_APP, "Closing unattached stream."); log_fn(severity, LD_APP, "Closing unattached stream.");
@ -1834,9 +1836,11 @@ connection_exit_connect(edge_connection_t *edge_conn)
connection_watch_events(conn, EV_READ); connection_watch_events(conn, EV_READ);
/* also, deliver a 'connected' cell back through the circuit. */ /* also, deliver a 'connected' cell back through the circuit. */
if (connection_edge_is_rendezvous_stream(edge_conn)) { /* rendezvous stream */ if (connection_edge_is_rendezvous_stream(edge_conn)) {
/* rendezvous stream */
/* don't send an address back! */ /* don't send an address back! */
connection_edge_send_command(edge_conn, circuit_get_by_edge_conn(edge_conn), connection_edge_send_command(edge_conn,
circuit_get_by_edge_conn(edge_conn),
RELAY_COMMAND_CONNECTED, RELAY_COMMAND_CONNECTED,
NULL, 0, edge_conn->cpath_layer); NULL, 0, edge_conn->cpath_layer);
} else { /* normal stream */ } else { /* normal stream */
@ -1845,7 +1849,8 @@ connection_exit_connect(edge_connection_t *edge_conn)
set_uint32(connected_payload, htonl(conn->addr)); set_uint32(connected_payload, htonl(conn->addr));
set_uint32(connected_payload+4, set_uint32(connected_payload+4,
htonl(dns_clip_ttl(edge_conn->address_ttl))); htonl(dns_clip_ttl(edge_conn->address_ttl)));
connection_edge_send_command(edge_conn, circuit_get_by_edge_conn(edge_conn), connection_edge_send_command(edge_conn,
circuit_get_by_edge_conn(edge_conn),
RELAY_COMMAND_CONNECTED, RELAY_COMMAND_CONNECTED,
connected_payload, 8, edge_conn->cpath_layer); connected_payload, 8, edge_conn->cpath_layer);
} }

View File

@ -662,8 +662,8 @@ connection_tls_finish_handshake(or_connection_t *conn)
return -1; return -1;
if (!started_here) { if (!started_here) {
connection_or_init_conn_from_address(conn,conn->_base.addr,conn->_base.port, connection_or_init_conn_from_address(conn,conn->_base.addr,
digest_rcvd, 0); conn->_base.port, digest_rcvd, 0);
/* Annotate that we received a TLS connection. /* Annotate that we received a TLS connection.
* (Todo: only actually consider ourselves reachable if there * (Todo: only actually consider ourselves reachable if there

View File

@ -157,7 +157,8 @@ static int handle_control_getconf(control_connection_t *conn, uint32_t len,
const char *body); const char *body);
static int handle_control_setevents(control_connection_t *conn, uint32_t len, static int handle_control_setevents(control_connection_t *conn, uint32_t len,
const char *body); const char *body);
static int handle_control_authenticate(control_connection_t *conn, uint32_t len, static int handle_control_authenticate(control_connection_t *conn,
uint32_t len,
const char *body); const char *body);
static int handle_control_saveconf(control_connection_t *conn, uint32_t len, static int handle_control_saveconf(control_connection_t *conn, uint32_t len,
const char *body); const char *body);
@ -167,19 +168,25 @@ static int handle_control_mapaddress(control_connection_t *conn, uint32_t len,
const char *body); const char *body);
static int handle_control_getinfo(control_connection_t *conn, uint32_t len, static int handle_control_getinfo(control_connection_t *conn, uint32_t len,
const char *body); const char *body);
static int handle_control_extendcircuit(control_connection_t *conn, uint32_t len, static int handle_control_extendcircuit(control_connection_t *conn,
uint32_t len,
const char *body); const char *body);
static int handle_control_setpurpose(control_connection_t *conn, int for_circuits, static int handle_control_setpurpose(control_connection_t *conn,
int for_circuits,
uint32_t len, const char *body); uint32_t len, const char *body);
static int handle_control_attachstream(control_connection_t *conn, uint32_t len, static int handle_control_attachstream(control_connection_t *conn,
uint32_t len,
const char *body); const char *body);
static int handle_control_postdescriptor(control_connection_t *conn, uint32_t len, static int handle_control_postdescriptor(control_connection_t *conn,
uint32_t len,
const char *body); const char *body);
static int handle_control_redirectstream(control_connection_t *conn, uint32_t len, static int handle_control_redirectstream(control_connection_t *conn,
uint32_t len,
const char *body); const char *body);
static int handle_control_closestream(control_connection_t *conn, uint32_t len, static int handle_control_closestream(control_connection_t *conn, uint32_t len,
const char *body); const char *body);
static int handle_control_closecircuit(control_connection_t *conn, uint32_t len, static int handle_control_closecircuit(control_connection_t *conn,
uint32_t len,
const char *body); const char *body);
static int write_stream_target_to_buf(edge_connection_t *conn, char *buf, static int write_stream_target_to_buf(edge_connection_t *conn, char *buf,
size_t len); size_t len);
@ -529,7 +536,8 @@ send_control_done2(control_connection_t *conn, const char *msg, size_t len)
/** Send an error message with error code <b>error</b> and body /** Send an error message with error code <b>error</b> and body
* <b>message</b> down the connection <b>conn</b> */ * <b>message</b> down the connection <b>conn</b> */
static void static void
send_control0_error(control_connection_t *conn, uint16_t error, const char *message) send_control0_error(control_connection_t *conn, uint16_t error,
const char *message)
{ {
char buf[256]; char buf[256];
size_t len; size_t len;
@ -784,7 +792,8 @@ handle_control_resetconf(control_connection_t *conn, uint32_t len, char *body)
/** Called when we receive a GETCONF message. Parse the request, and /** Called when we receive a GETCONF message. Parse the request, and
* reply with a CONFVALUE or an ERROR message */ * reply with a CONFVALUE or an ERROR message */
static int static int
handle_control_getconf(control_connection_t *conn, uint32_t body_len, const char *body) handle_control_getconf(control_connection_t *conn, uint32_t body_len,
const char *body)
{ {
smartlist_t *questions = NULL; smartlist_t *questions = NULL;
smartlist_t *answers = NULL; smartlist_t *answers = NULL;
@ -887,7 +896,8 @@ handle_control_getconf(control_connection_t *conn, uint32_t body_len, const char
/** Called when we get a SETEVENTS message: update conn->event_mask, /** Called when we get a SETEVENTS message: update conn->event_mask,
* and reply with DONE or ERROR. */ * and reply with DONE or ERROR. */
static int static int
handle_control_setevents(control_connection_t *conn, uint32_t len, const char *body) handle_control_setevents(control_connection_t *conn, uint32_t len,
const char *body)
{ {
uint16_t event_code; uint16_t event_code;
uint32_t event_mask = 0; uint32_t event_mask = 0;
@ -992,7 +1002,8 @@ decode_hashed_password(char *buf, const char *hashed)
* OPEN. Reply with DONE or ERROR. * OPEN. Reply with DONE or ERROR.
*/ */
static int static int
handle_control_authenticate(control_connection_t *conn, uint32_t len, const char *body) handle_control_authenticate(control_connection_t *conn, uint32_t len,
const char *body)
{ {
int used_quoted_string = 0; int used_quoted_string = 0;
or_options_t *options = get_options(); or_options_t *options = get_options();
@ -1157,7 +1168,8 @@ handle_control_signal(control_connection_t *conn, uint32_t len,
/** Called when we get a MAPADDRESS command; try to bind all listed addresses, /** Called when we get a MAPADDRESS command; try to bind all listed addresses,
* and report success or failrue. */ * and report success or failrue. */
static int static int
handle_control_mapaddress(control_connection_t *conn, uint32_t len, const char *body) handle_control_mapaddress(control_connection_t *conn, uint32_t len,
const char *body)
{ {
smartlist_t *elts; smartlist_t *elts;
smartlist_t *lines; smartlist_t *lines;
@ -1552,7 +1564,8 @@ handle_getinfo_helper(const char *question, char **answer)
/** Called when we receive a GETINFO command. Try to fetch all requested /** Called when we receive a GETINFO command. Try to fetch all requested
* information, and reply with information or error message. */ * information, and reply with information or error message. */
static int static int
handle_control_getinfo(control_connection_t *conn, uint32_t len, const char *body) handle_control_getinfo(control_connection_t *conn, uint32_t len,
const char *body)
{ {
smartlist_t *questions = NULL; smartlist_t *questions = NULL;
smartlist_t *answers = NULL; smartlist_t *answers = NULL;
@ -2456,7 +2469,8 @@ connection_control_process_inbuf_v0(control_connection_t *conn)
again: again:
/* Try to suck a control message from the buffer. */ /* Try to suck a control message from the buffer. */
switch (fetch_from_buf_control0(conn->_base.inbuf, &body_len, &command_type, &body, switch (fetch_from_buf_control0(conn->_base.inbuf, &body_len, &command_type,
&body,
conn->_base.state == CONTROL_CONN_STATE_NEEDAUTH_V0)) conn->_base.state == CONTROL_CONN_STATE_NEEDAUTH_V0))
{ {
case -2: case -2:

View File

@ -46,7 +46,8 @@ static int body_is_plausible(const char *body, size_t body_len, int purpose);
static int purpose_is_private(uint8_t purpose); static int purpose_is_private(uint8_t purpose);
static char *http_get_header(const char *headers, const char *which); static char *http_get_header(const char *headers, const char *which);
static void http_set_address_origin(const char *headers, connection_t *conn); static void http_set_address_origin(const char *headers, connection_t *conn);
static void connection_dir_download_networkstatus_failed(dir_connection_t *conn); static void connection_dir_download_networkstatus_failed(
dir_connection_t *conn);
static void connection_dir_download_routerdesc_failed(dir_connection_t *conn); static void connection_dir_download_routerdesc_failed(dir_connection_t *conn);
static void dir_networkstatus_download_failed(smartlist_t *failed); static void dir_networkstatus_download_failed(smartlist_t *failed);
static void dir_routerdesc_download_failed(smartlist_t *failed); static void dir_routerdesc_download_failed(smartlist_t *failed);
@ -398,13 +399,15 @@ directory_initiate_command(const char *address, uint32_t addr,
dir_port = get_options()->HttpProxyPort; dir_port = get_options()->HttpProxyPort;
} }
switch (connection_connect(TO_CONN(conn), conn->_base.address, addr, dir_port)) { switch (connection_connect(TO_CONN(conn), conn->_base.address, addr,
dir_port)) {
case -1: case -1:
connection_dir_request_failed(conn); /* retry if we want */ connection_dir_request_failed(conn); /* retry if we want */
connection_free(TO_CONN(conn)); connection_free(TO_CONN(conn));
return; return;
case 1: case 1:
conn->_base.state = DIR_CONN_STATE_CLIENT_SENDING; /* start flushing conn */ /* start flushing conn */
conn->_base.state = DIR_CONN_STATE_CLIENT_SENDING;
/* fall through */ /* fall through */
case 0: case 0:
/* queue the command on the outbuf */ /* queue the command on the outbuf */
@ -848,7 +851,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
log_debug(LD_DIR, log_debug(LD_DIR,
"Received response from directory server '%s:%d': %d %s", "Received response from directory server '%s:%d': %d %s",
conn->_base.address, conn->_base.port, status_code, escaped(reason)); conn->_base.address, conn->_base.port, status_code,
escaped(reason));
/* now check if it's got any hints for us about our IP address. */ /* now check if it's got any hints for us about our IP address. */
if (server_mode(get_options())) { if (server_mode(get_options())) {
@ -881,7 +885,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
if (status_code == 503) { if (status_code == 503) {
log_info(LD_DIR,"Received http status code %d (%s) from server " log_info(LD_DIR,"Received http status code %d (%s) from server "
"'%s:%d'. I'll try again soon.", "'%s:%d'. I'll try again soon.",
status_code, escaped(reason), conn->_base.address, conn->_base.port); status_code, escaped(reason), conn->_base.address,
conn->_base.port);
tor_free(body); tor_free(headers); tor_free(reason); tor_free(body); tor_free(headers); tor_free(reason);
return -1; return -1;
} }
@ -913,7 +918,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
log_info(LD_HTTP, "HTTP body from server '%s:%d' was labeled %s, " log_info(LD_HTTP, "HTTP body from server '%s:%d' was labeled %s, "
"but it seems to be %s.%s", "but it seems to be %s.%s",
conn->_base.address, conn->_base.port, description1, description2, conn->_base.address, conn->_base.port, description1,
description2,
(compression>0 && guessed>0)?" Trying both.":""); (compression>0 && guessed>0)?" Trying both.":"");
} }
/* Try declared compression first if we can. */ /* Try declared compression first if we can. */
@ -949,7 +955,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
if (status_code != 200) { if (status_code != 200) {
log_warn(LD_DIR,"Received http status code %d (%s) from server " log_warn(LD_DIR,"Received http status code %d (%s) from server "
"'%s:%d'. I'll try again soon.", "'%s:%d'. I'll try again soon.",
status_code, escaped(reason), conn->_base.address, conn->_base.port); status_code, escaped(reason), conn->_base.address,
conn->_base.port);
tor_free(body); tor_free(headers); tor_free(reason); tor_free(body); tor_free(headers); tor_free(reason);
return -1; return -1;
} }
@ -966,7 +973,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
if (status_code != 200) { if (status_code != 200) {
log_warn(LD_DIR,"Received http status code %d (%s) from server " log_warn(LD_DIR,"Received http status code %d (%s) from server "
"'%s:%d'. I'll try again soon.", "'%s:%d'. I'll try again soon.",
status_code, escaped(reason), conn->_base.address, conn->_base.port); status_code, escaped(reason), conn->_base.address,
conn->_base.port);
tor_free(body); tor_free(headers); tor_free(reason); tor_free(body); tor_free(headers); tor_free(reason);
return -1; return -1;
} }
@ -990,8 +998,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
log_warn(LD_DIR, log_warn(LD_DIR,
"Received http status code %d (%s) from server " "Received http status code %d (%s) from server "
"'%s:%d' while fetching \"/tor/status/%s\". I'll try again soon.", "'%s:%d' while fetching \"/tor/status/%s\". I'll try again soon.",
status_code, escaped(reason), conn->_base.address, conn->_base.port, status_code, escaped(reason), conn->_base.address,
conn->requested_resource); conn->_base.port, conn->requested_resource);
tor_free(body); tor_free(headers); tor_free(reason); tor_free(body); tor_free(headers); tor_free(reason);
connection_dir_download_networkstatus_failed(conn); connection_dir_download_networkstatus_failed(conn);
return -1; return -1;
@ -1060,8 +1068,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
log_fn(dir_okay ? LOG_INFO : LOG_WARN, LD_DIR, log_fn(dir_okay ? LOG_INFO : LOG_WARN, LD_DIR,
"Received http status code %d (%s) from server '%s:%d' " "Received http status code %d (%s) from server '%s:%d' "
"while fetching \"/tor/server/%s\". I'll try again soon.", "while fetching \"/tor/server/%s\". I'll try again soon.",
status_code, escaped(reason), conn->_base.address, conn->_base.port, status_code, escaped(reason), conn->_base.address,
conn->requested_resource); conn->_base.port, conn->requested_resource);
if (!which) { if (!which) {
connection_dir_download_routerdesc_failed(conn); connection_dir_download_routerdesc_failed(conn);
} else { } else {
@ -1122,12 +1130,14 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
"'%s:%d'. Is your clock skewed? Have you mailed us your key " "'%s:%d'. Is your clock skewed? Have you mailed us your key "
"fingerprint? Are you using the right key? Are you using a " "fingerprint? Are you using the right key? Are you using a "
"private IP address? See http://tor.eff.org/doc/" "private IP address? See http://tor.eff.org/doc/"
"tor-doc-server.html",escaped(reason), conn->_base.address, conn->_base.port); "tor-doc-server.html",escaped(reason), conn->_base.address,
conn->_base.port);
break; break;
default: default:
log_warn(LD_GENERAL, log_warn(LD_GENERAL,
"http status %d (%s) reason unexpected (server '%s:%d').", "http status %d (%s) reason unexpected (server '%s:%d').",
status_code, escaped(reason), conn->_base.address, conn->_base.port); status_code, escaped(reason), conn->_base.address,
conn->_base.port);
break; break;
} }
/* return 0 in all cases, since we don't want to mark any /* return 0 in all cases, since we don't want to mark any
@ -1162,7 +1172,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
default: default:
log_warn(LD_REND,"http status %d (%s) response unexpected (server " log_warn(LD_REND,"http status %d (%s) response unexpected (server "
"'%s:%d').", "'%s:%d').",
status_code, escaped(reason), conn->_base.address, conn->_base.port); status_code, escaped(reason), conn->_base.address,
conn->_base.port);
break; break;
} }
} }
@ -1182,7 +1193,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
default: default:
log_warn(LD_REND,"http status %d (%s) response unexpected (server " log_warn(LD_REND,"http status %d (%s) response unexpected (server "
"'%s:%d').", "'%s:%d').",
status_code, escaped(reason), conn->_base.address, conn->_base.port); status_code, escaped(reason), conn->_base.address,
conn->_base.port);
break; break;
} }
} }
@ -1617,7 +1629,8 @@ directory_handle_command_get(dir_connection_t *conn, char *headers,
return 0; return 0;
} }
if (!strcmp(url,"/tor/dir-all-weaselhack") && (conn->_base.addr == 0x7f000001ul) && if (!strcmp(url,"/tor/dir-all-weaselhack") &&
(conn->_base.addr == 0x7f000001ul) &&
authdir_mode(get_options())) { authdir_mode(get_options())) {
/* XXX until weasel rewrites his scripts XXXX012 */ /* XXX until weasel rewrites his scripts XXXX012 */
char *new_directory=NULL; char *new_directory=NULL;
@ -1746,7 +1759,8 @@ directory_handle_command(dir_connection_t *conn)
&body, &body_len, MAX_BODY_SIZE, 0)) { &body, &body_len, MAX_BODY_SIZE, 0)) {
case -1: /* overflow */ case -1: /* overflow */
log_warn(LD_DIRSERV, log_warn(LD_DIRSERV,
"Invalid input from address '%s'. Closing.", conn->_base.address); "Invalid input from address '%s'. Closing.",
conn->_base.address);
return -1; return -1;
case 0: case 0:
log_debug(LD_DIRSERV,"command not all here yet."); log_debug(LD_DIRSERV,"command not all here yet.");
@ -1793,7 +1807,8 @@ connection_dir_finished_flushing(dir_connection_t *conn)
connection_mark_for_close(TO_CONN(conn)); connection_mark_for_close(TO_CONN(conn));
return 0; return 0;
default: default:
log_warn(LD_BUG,"Bug: called in unexpected state %d.", conn->_base.state); log_warn(LD_BUG,"Bug: called in unexpected state %d.",
conn->_base.state);
tor_fragile_assert(); tor_fragile_assert();
return -1; return -1;
} }

View File

@ -380,21 +380,23 @@ dns_resolve(edge_connection_t *exitconn)
pending_connection->next = resolve->pending_connections; pending_connection->next = resolve->pending_connections;
resolve->pending_connections = pending_connection; resolve->pending_connections = pending_connection;
log_debug(LD_EXIT,"Connection (fd %d) waiting for pending DNS " log_debug(LD_EXIT,"Connection (fd %d) waiting for pending DNS "
"resolve of %s", "resolve of %s", exitconn->_base.s,
exitconn->_base.s, escaped_safe_str(exitconn->_base.address)); escaped_safe_str(exitconn->_base.address));
exitconn->_base.state = EXIT_CONN_STATE_RESOLVING; exitconn->_base.state = EXIT_CONN_STATE_RESOLVING;
return 0; return 0;
case CACHE_STATE_VALID: case CACHE_STATE_VALID:
exitconn->_base.addr = resolve->addr; exitconn->_base.addr = resolve->addr;
exitconn->address_ttl = resolve->ttl; exitconn->address_ttl = resolve->ttl;
log_debug(LD_EXIT,"Connection (fd %d) found cached answer for %s", log_debug(LD_EXIT,"Connection (fd %d) found cached answer for %s",
exitconn->_base.s, escaped_safe_str(exitconn->_base.address)); exitconn->_base.s,
escaped_safe_str(exitconn->_base.address));
if (exitconn->_base.purpose == EXIT_PURPOSE_RESOLVE) if (exitconn->_base.purpose == EXIT_PURPOSE_RESOLVE)
send_resolved_cell(exitconn, RESOLVED_TYPE_IPV4); send_resolved_cell(exitconn, RESOLVED_TYPE_IPV4);
return 1; return 1;
case CACHE_STATE_FAILED: case CACHE_STATE_FAILED:
log_debug(LD_EXIT,"Connection (fd %d) found cached error for %s", log_debug(LD_EXIT,"Connection (fd %d) found cached error for %s",
exitconn->_base.s, escaped_safe_str(exitconn->_base.address)); exitconn->_base.s,
escaped_safe_str(exitconn->_base.address));
if (exitconn->_base.purpose == EXIT_PURPOSE_RESOLVE) if (exitconn->_base.purpose == EXIT_PURPOSE_RESOLVE)
send_resolved_cell(exitconn, RESOLVED_TYPE_ERROR); send_resolved_cell(exitconn, RESOLVED_TYPE_ERROR);
circ = circuit_get_by_edge_conn(exitconn); circ = circuit_get_by_edge_conn(exitconn);
@ -766,7 +768,8 @@ assign_to_dnsworker(edge_connection_t *exitconn)
return 0; return 0;
err: err:
dns_cancel_pending_resolve(exitconn->_base.address); /* also sends end and frees */ /* also sends end and frees */
dns_cancel_pending_resolve(exitconn->_base.address);
return -1; return -1;
} }

View File

@ -444,8 +444,10 @@ conn_write_callback(int fd, short events, void *_conn)
"Bug: unhandled error on write for %s connection (fd %d); removing", "Bug: unhandled error on write for %s connection (fd %d); removing",
conn_type_to_string(conn->type), conn->s); conn_type_to_string(conn->type), conn->s);
tor_fragile_assert(); tor_fragile_assert();
if (CONN_IS_EDGE(conn)) if (CONN_IS_EDGE(conn)) {
conn->edge_has_sent_end = 1; /* otherwise we cry wolf about duplicate close */ /* otherwise we cry wolf about duplicate close */
conn->edge_has_sent_end = 1;
}
/* XXX do we need a close-immediate here, so we don't try to flush? */ /* XXX do we need a close-immediate here, so we don't try to flush? */
connection_mark_for_close(conn); connection_mark_for_close(conn);
} }
@ -552,7 +554,8 @@ directory_all_unreachable(time_t now)
"Failing connection to '%s:%d'.", "Failing connection to '%s:%d'.",
safe_str(edge_conn->socks_request->address), safe_str(edge_conn->socks_request->address),
edge_conn->socks_request->port); edge_conn->socks_request->port);
connection_mark_unattached_ap(edge_conn, END_STREAM_REASON_NET_UNREACHABLE); connection_mark_unattached_ap(edge_conn,
END_STREAM_REASON_NET_UNREACHABLE);
} }
} }

View File

@ -726,8 +726,6 @@ typedef struct edge_connection_t {
/* Used only by DIR and AP connections: */ /* Used only by DIR and AP connections: */
char rend_query[REND_SERVICE_ID_LEN+1]; /**< What rendezvous service are we char rend_query[REND_SERVICE_ID_LEN+1]; /**< What rendezvous service are we
* querying for? (DIR/AP only) */ * querying for? (DIR/AP only) */
} edge_connection_t; } edge_connection_t;
typedef struct dir_connection_t { typedef struct dir_connection_t {
@ -1835,11 +1833,13 @@ int connection_or_nonopen_was_started_here(or_connection_t *conn);
void _connection_mark_unattached_ap(edge_connection_t *conn, int endreason, void _connection_mark_unattached_ap(edge_connection_t *conn, int endreason,
int line, const char *file); int line, const char *file);
int connection_edge_reached_eof(edge_connection_t *conn); int connection_edge_reached_eof(edge_connection_t *conn);
int connection_edge_process_inbuf(edge_connection_t *conn, int package_partial); int connection_edge_process_inbuf(edge_connection_t *conn,
int package_partial);
int connection_edge_destroy(uint16_t circ_id, edge_connection_t *conn); int connection_edge_destroy(uint16_t circ_id, edge_connection_t *conn);
int connection_edge_end(edge_connection_t *conn, char reason, int connection_edge_end(edge_connection_t *conn, char reason,
crypt_path_t *cpath_layer); crypt_path_t *cpath_layer);
int connection_edge_end_errno(edge_connection_t *conn, crypt_path_t *cpath_layer); int connection_edge_end_errno(edge_connection_t *conn,
crypt_path_t *cpath_layer);
int connection_edge_finished_flushing(edge_connection_t *conn); int connection_edge_finished_flushing(edge_connection_t *conn);
int connection_edge_finished_connecting(edge_connection_t *conn); int connection_edge_finished_connecting(edge_connection_t *conn);
@ -1865,7 +1865,8 @@ int connection_edge_is_rendezvous_stream(edge_connection_t *conn);
int connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit); int connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit);
void connection_ap_expire_beginning(void); void connection_ap_expire_beginning(void);
void connection_ap_attach_pending(void); void connection_ap_attach_pending(void);
int connection_ap_detach_retriable(edge_connection_t *conn, origin_circuit_t *circ); int connection_ap_detach_retriable(edge_connection_t *conn,
origin_circuit_t *circ);
void addressmap_init(void); void addressmap_init(void);
void addressmap_clean(time_t now); void addressmap_clean(time_t now);
@ -1912,7 +1913,8 @@ or_connection_t *connection_or_connect(uint32_t addr, uint16_t port,
int connection_tls_start_handshake(or_connection_t *conn, int receiving); int connection_tls_start_handshake(or_connection_t *conn, int receiving);
int connection_tls_continue_handshake(or_connection_t *conn); int connection_tls_continue_handshake(or_connection_t *conn);
void connection_or_write_cell_to_buf(const cell_t *cell, or_connection_t *conn); void connection_or_write_cell_to_buf(const cell_t *cell,
or_connection_t *conn);
int connection_or_send_destroy(uint16_t circ_id, or_connection_t *conn, int connection_or_send_destroy(uint16_t circ_id, or_connection_t *conn,
int reason); int reason);
@ -1978,8 +1980,10 @@ int connection_control_process_inbuf(control_connection_t *conn);
int control_event_circuit_status(origin_circuit_t *circ, int control_event_circuit_status(origin_circuit_t *circ,
circuit_status_event_t e); circuit_status_event_t e);
int control_event_stream_status(edge_connection_t *conn, stream_status_event_t e); int control_event_stream_status(edge_connection_t *conn,
int control_event_or_conn_status(or_connection_t *conn, or_conn_status_event_t e); stream_status_event_t e);
int control_event_or_conn_status(or_connection_t *conn,
or_conn_status_event_t e);
int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written); int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written);
void control_event_logmsg(int severity, unsigned int domain, const char *msg); void control_event_logmsg(int severity, unsigned int domain, const char *msg);
int control_event_descriptors_changed(smartlist_t *routers); int control_event_descriptors_changed(smartlist_t *routers);
@ -2216,7 +2220,8 @@ int connection_edge_send_command(edge_connection_t *fromconn, circuit_t *circ,
int relay_command, const char *payload, int relay_command, const char *payload,
size_t payload_len, size_t payload_len,
crypt_path_t *cpath_layer); crypt_path_t *cpath_layer);
int connection_edge_package_raw_inbuf(edge_connection_t *conn, int package_partial); int connection_edge_package_raw_inbuf(edge_connection_t *conn,
int package_partial);
void connection_edge_consider_sending_sendme(edge_connection_t *conn); void connection_edge_consider_sending_sendme(edge_connection_t *conn);
socks5_reply_status_t connection_edge_end_reason_socks5_response(int reason); socks5_reply_status_t connection_edge_end_reason_socks5_response(int reason);
int errno_to_end_reason(int e); int errno_to_end_reason(int e);

View File

@ -396,7 +396,8 @@ relay_lookup_conn(circuit_t *circ, cell_t *cell, int cell_direction)
} else { } else {
for (tmpconn = TO_OR_CIRCUIT(circ)->n_streams; tmpconn; for (tmpconn = TO_OR_CIRCUIT(circ)->n_streams; tmpconn;
tmpconn=tmpconn->next_stream) { tmpconn=tmpconn->next_stream) {
if (rh.stream_id == tmpconn->stream_id && !tmpconn->_base.marked_for_close) { if (rh.stream_id == tmpconn->stream_id &&
!tmpconn->_base.marked_for_close) {
log_debug(LD_EXIT,"found conn for stream %d.", rh.stream_id); log_debug(LD_EXIT,"found conn for stream %d.", rh.stream_id);
if (cell_direction == CELL_DIRECTION_OUT || if (cell_direction == CELL_DIRECTION_OUT ||
connection_edge_is_rendezvous_stream(tmpconn)) connection_edge_is_rendezvous_stream(tmpconn))
@ -405,7 +406,8 @@ relay_lookup_conn(circuit_t *circ, cell_t *cell, int cell_direction)
} }
for (tmpconn = TO_OR_CIRCUIT(circ)->resolving_streams; tmpconn; for (tmpconn = TO_OR_CIRCUIT(circ)->resolving_streams; tmpconn;
tmpconn=tmpconn->next_stream) { tmpconn=tmpconn->next_stream) {
if (rh.stream_id == tmpconn->stream_id && !tmpconn->_base.marked_for_close) { if (rh.stream_id == tmpconn->stream_id &&
!tmpconn->_base.marked_for_close) {
log_debug(LD_EXIT,"found conn for stream %d.", rh.stream_id); log_debug(LD_EXIT,"found conn for stream %d.", rh.stream_id);
return tmpconn; return tmpconn;
} }
@ -465,7 +467,8 @@ connection_edge_send_command(edge_connection_t *fromconn, circuit_t *circ,
if (fromconn && fromconn->_base.marked_for_close) { if (fromconn && fromconn->_base.marked_for_close) {
log_warn(LD_BUG, log_warn(LD_BUG,
"Bug: called on conn that's already marked for close at %s:%d.", "Bug: called on conn that's already marked for close at %s:%d.",
fromconn->_base.marked_for_close_file, fromconn->_base.marked_for_close); fromconn->_base.marked_for_close_file,
fromconn->_base.marked_for_close);
return 0; return 0;
} }
@ -780,7 +783,8 @@ connection_edge_process_end_not_open(
circuit_log_path(LOG_INFO,LD_APP,circ); circuit_log_path(LOG_INFO,LD_APP,circ);
connection_mark_unattached_ap(conn, reason); connection_mark_unattached_ap(conn, reason);
} else { } else {
conn->_base.edge_has_sent_end = 1; /* we just got an 'end', don't need to send one */ /* we just got an 'end', don't need to send one */
conn->_base.edge_has_sent_end = 1;
connection_mark_for_close(TO_CONN(conn)); connection_mark_for_close(TO_CONN(conn));
} }
return 0; return 0;
@ -807,7 +811,8 @@ connection_edge_process_relay_cell_not_open(
return 0; return 0;
} }
if (conn->_base.type == CONN_TYPE_AP && rh->command == RELAY_COMMAND_CONNECTED) { if (conn->_base.type == CONN_TYPE_AP &&
rh->command == RELAY_COMMAND_CONNECTED) {
tor_assert(CIRCUIT_IS_ORIGIN(circ)); tor_assert(CIRCUIT_IS_ORIGIN(circ));
if (conn->_base.state != AP_CONN_STATE_CONNECT_WAIT) { if (conn->_base.state != AP_CONN_STATE_CONNECT_WAIT) {
log_warn(LD_APP,"Got 'connected' while not in state connect_wait. " log_warn(LD_APP,"Got 'connected' while not in state connect_wait. "
@ -846,7 +851,8 @@ connection_edge_process_relay_cell_not_open(
} }
return 0; return 0;
} }
if (conn->_base.type == CONN_TYPE_AP && rh->command == RELAY_COMMAND_RESOLVED) { if (conn->_base.type == CONN_TYPE_AP &&
rh->command == RELAY_COMMAND_RESOLVED) {
int ttl; int ttl;
int answer_len; int answer_len;
if (conn->_base.state != AP_CONN_STATE_RESOLVE_WAIT) { if (conn->_base.state != AP_CONN_STATE_RESOLVE_WAIT) {

View File

@ -3317,9 +3317,9 @@ list_pending_descriptor_downloads(digestmap_t *result)
if (conn->type == CONN_TYPE_DIR && if (conn->type == CONN_TYPE_DIR &&
conn->purpose == DIR_PURPOSE_FETCH_SERVERDESC && conn->purpose == DIR_PURPOSE_FETCH_SERVERDESC &&
!conn->marked_for_close) { !conn->marked_for_close) {
dir_connection_t *dir_conn = TO_DIR_CONN(conn); const char *resource = TO_DIR_CONN(conn)->requested_resource;
if (!strcmpstart(dir_conn->requested_resource, prefix)) if (!strcmpstart(resource, prefix))
dir_split_resource_into_fingerprints(dir_conn->requested_resource+p_len, dir_split_resource_into_fingerprints(resource + p_len,
tmp, NULL, 1, 0); tmp, NULL, 1, 0);
} }
} }