mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-03 00:53:32 +01:00
r6909@Kushana: nickm | 2006-07-26 13:05:58 -0400
Clean up wide lines from last patch. svn:r6907
This commit is contained in:
parent
4ff4577beb
commit
ec82db6995
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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:
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
13
src/or/dns.c
13
src/or/dns.c
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
23
src/or/or.h
23
src/or/or.h
@ -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);
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user