mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Add a TOR_SOCKET_T_FORMAT construction for logging sockets.
We need this since win64 has a 64-bit SOCKET type. Based on a patch from yayooo for 7260, forward-ported to 0.2.4.
This commit is contained in:
parent
07656d70ed
commit
1bfda600c3
@ -239,6 +239,19 @@ size_t strlcpy(char *dst, const char *src, size_t siz) ATTR_NONNULL((1,2));
|
|||||||
#define I64_FORMAT "%lld"
|
#define I64_FORMAT "%lld"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (SIZEOF_INTPTR_T == SIZEOF_INT)
|
||||||
|
#define INTPTR_T_FORMAT "%d"
|
||||||
|
#define INTPTR_PRINTF_ARG(x) ((int)(x))
|
||||||
|
#elif (SIZEOF_INTPTR_T == SIZEOF_LONG)
|
||||||
|
#define INTPTR_T_FORMAT "%ld"
|
||||||
|
#define INTPTR_PRINTF_ARG(x) ((long)(x))
|
||||||
|
#elif (SIZEOF_INTPTR_T == 8)
|
||||||
|
#define INTPTR_T_FORMAT I64_FORMAT
|
||||||
|
#define INTPTR_PRINTF_ARG(x) I64_PRINTF_ARG(x)
|
||||||
|
#else
|
||||||
|
#error Unknown: SIZEOF_INTPTR_T
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Represents an mmaped file. Allocated via tor_mmap_file; freed with
|
/** Represents an mmaped file. Allocated via tor_mmap_file; freed with
|
||||||
* tor_munmap_file. */
|
* tor_munmap_file. */
|
||||||
typedef struct tor_mmap_t {
|
typedef struct tor_mmap_t {
|
||||||
@ -403,11 +416,13 @@ typedef int socklen_t;
|
|||||||
* any inadvertant checks for the socket being <= 0 or > 0 will probably
|
* any inadvertant checks for the socket being <= 0 or > 0 will probably
|
||||||
* still work. */
|
* still work. */
|
||||||
#define tor_socket_t intptr_t
|
#define tor_socket_t intptr_t
|
||||||
|
#define TOR_SOCKET_T_FORMAT INTPTR_T_FORMAT
|
||||||
#define SOCKET_OK(s) ((SOCKET)(s) != INVALID_SOCKET)
|
#define SOCKET_OK(s) ((SOCKET)(s) != INVALID_SOCKET)
|
||||||
#define TOR_INVALID_SOCKET INVALID_SOCKET
|
#define TOR_INVALID_SOCKET INVALID_SOCKET
|
||||||
#else
|
#else
|
||||||
/** Type used for a network socket. */
|
/** Type used for a network socket. */
|
||||||
#define tor_socket_t int
|
#define tor_socket_t int
|
||||||
|
#define TOR_SOCKET_T_FORMAT "%d"
|
||||||
/** Macro: true iff 's' is a possible value for a valid initialized socket. */
|
/** Macro: true iff 's' is a possible value for a valid initialized socket. */
|
||||||
#define SOCKET_OK(s) ((s) >= 0)
|
#define SOCKET_OK(s) ((s) >= 0)
|
||||||
/** Error/uninitialized value for a tor_socket_t. */
|
/** Error/uninitialized value for a tor_socket_t. */
|
||||||
|
@ -1460,7 +1460,7 @@ connection_connect(connection_t *conn, const char *address,
|
|||||||
|
|
||||||
/* it succeeded. we're connected. */
|
/* it succeeded. we're connected. */
|
||||||
log_fn(inprogress?LOG_DEBUG:LOG_INFO, LD_NET,
|
log_fn(inprogress?LOG_DEBUG:LOG_INFO, LD_NET,
|
||||||
"Connection to %s:%u %s (sock %d).",
|
"Connection to %s:%u %s (sock "TOR_SOCKET_T_FORMAT").",
|
||||||
escaped_safe_str_client(address),
|
escaped_safe_str_client(address),
|
||||||
port, inprogress?"in progress":"established", s);
|
port, inprogress?"in progress":"established", s);
|
||||||
conn->s = s;
|
conn->s = s;
|
||||||
|
@ -124,7 +124,8 @@ connection_edge_reached_eof(edge_connection_t *conn)
|
|||||||
/* it still has stuff to process. don't let it die yet. */
|
/* it still has stuff to process. don't let it die yet. */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
log_info(LD_EDGE,"conn (fd %d) reached eof. Closing.", conn->base_.s);
|
log_info(LD_EDGE,"conn (fd "TOR_SOCKET_T_FORMAT") reached eof. Closing.",
|
||||||
|
conn->base_.s);
|
||||||
if (!conn->base_.marked_for_close) {
|
if (!conn->base_.marked_for_close) {
|
||||||
/* only mark it if not already marked. it's possible to
|
/* only mark it if not already marked. it's possible to
|
||||||
* get the 'end' right around when the client hangs up on us. */
|
* get the 'end' right around when the client hangs up on us. */
|
||||||
@ -313,11 +314,12 @@ connection_edge_end(edge_connection_t *conn, uint8_t reason)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (circ && !circ->marked_for_close) {
|
if (circ && !circ->marked_for_close) {
|
||||||
log_debug(LD_EDGE,"Sending end on conn (fd %d).",conn->base_.s);
|
log_debug(LD_EDGE,"Sending end on conn (fd "TOR_SOCKET_T_FORMAT").",
|
||||||
|
conn->base_.s);
|
||||||
connection_edge_send_command(conn, RELAY_COMMAND_END,
|
connection_edge_send_command(conn, RELAY_COMMAND_END,
|
||||||
payload, payload_len);
|
payload, payload_len);
|
||||||
} else {
|
} else {
|
||||||
log_debug(LD_EDGE,"No circ to send end on conn (fd %d).",
|
log_debug(LD_EDGE,"No circ to send end on conn (fd "TOR_SOCKET_T_FORMAT").",
|
||||||
conn->base_.s);
|
conn->base_.s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2619,7 +2621,8 @@ connection_ap_handshake_send_begin(entry_connection_t *ap_conn)
|
|||||||
edge_conn->package_window = STREAMWINDOW_START;
|
edge_conn->package_window = STREAMWINDOW_START;
|
||||||
edge_conn->deliver_window = STREAMWINDOW_START;
|
edge_conn->deliver_window = STREAMWINDOW_START;
|
||||||
base_conn->state = AP_CONN_STATE_CONNECT_WAIT;
|
base_conn->state = AP_CONN_STATE_CONNECT_WAIT;
|
||||||
log_info(LD_APP,"Address/port sent, ap socket %d, n_circ_id %d",
|
log_info(LD_APP,"Address/port sent, ap socket "TOR_SOCKET_T_FORMAT
|
||||||
|
", n_circ_id %d",
|
||||||
base_conn->s, circ->base_.n_circ_id);
|
base_conn->s, circ->base_.n_circ_id);
|
||||||
control_event_stream_status(ap_conn, STREAM_EVENT_SENT_CONNECT, 0);
|
control_event_stream_status(ap_conn, STREAM_EVENT_SENT_CONNECT, 0);
|
||||||
|
|
||||||
@ -2720,7 +2723,8 @@ connection_ap_handshake_send_resolve(entry_connection_t *ap_conn)
|
|||||||
tor_free(base_conn->address); /* Maybe already set by dnsserv. */
|
tor_free(base_conn->address); /* Maybe already set by dnsserv. */
|
||||||
base_conn->address = tor_strdup("(Tor_internal)");
|
base_conn->address = tor_strdup("(Tor_internal)");
|
||||||
base_conn->state = AP_CONN_STATE_RESOLVE_WAIT;
|
base_conn->state = AP_CONN_STATE_RESOLVE_WAIT;
|
||||||
log_info(LD_APP,"Address sent for resolve, ap socket %d, n_circ_id %d",
|
log_info(LD_APP,"Address sent for resolve, ap socket "TOR_SOCKET_T_FORMAT
|
||||||
|
", n_circ_id %d",
|
||||||
base_conn->s, circ->base_.n_circ_id);
|
base_conn->s, circ->base_.n_circ_id);
|
||||||
control_event_stream_status(ap_conn, STREAM_EVENT_NEW, 0);
|
control_event_stream_status(ap_conn, STREAM_EVENT_NEW, 0);
|
||||||
control_event_stream_status(ap_conn, STREAM_EVENT_SENT_RESOLVE, 0);
|
control_event_stream_status(ap_conn, STREAM_EVENT_SENT_RESOLVE, 0);
|
||||||
|
@ -849,7 +849,7 @@ connection_or_group_set_badness(or_connection_t *head, int force)
|
|||||||
< now) {
|
< now) {
|
||||||
log_info(LD_OR,
|
log_info(LD_OR,
|
||||||
"Marking OR conn to %s:%d as too old for new circuits "
|
"Marking OR conn to %s:%d as too old for new circuits "
|
||||||
"(fd %d, %d secs old).",
|
"(fd "TOR_SOCKET_T_FORMAT", %d secs old).",
|
||||||
or_conn->base_.address, or_conn->base_.port, or_conn->base_.s,
|
or_conn->base_.address, or_conn->base_.port, or_conn->base_.s,
|
||||||
(int)(now - or_conn->base_.timestamp_created));
|
(int)(now - or_conn->base_.timestamp_created));
|
||||||
connection_or_mark_bad_for_new_circs(or_conn);
|
connection_or_mark_bad_for_new_circs(or_conn);
|
||||||
@ -880,7 +880,7 @@ connection_or_group_set_badness(or_connection_t *head, int force)
|
|||||||
* and this one is open but not canonical. Mark it bad. */
|
* and this one is open but not canonical. Mark it bad. */
|
||||||
log_info(LD_OR,
|
log_info(LD_OR,
|
||||||
"Marking OR conn to %s:%d as unsuitable for new circuits: "
|
"Marking OR conn to %s:%d as unsuitable for new circuits: "
|
||||||
"(fd %d, %d secs old). It is not canonical, and we have "
|
"(fd "TOR_SOCKET_T_FORMAT", %d secs old). It is not canonical, and we have "
|
||||||
"another connection to that OR that is.",
|
"another connection to that OR that is.",
|
||||||
or_conn->base_.address, or_conn->base_.port, or_conn->base_.s,
|
or_conn->base_.address, or_conn->base_.port, or_conn->base_.s,
|
||||||
(int)(now - or_conn->base_.timestamp_created));
|
(int)(now - or_conn->base_.timestamp_created));
|
||||||
@ -928,8 +928,9 @@ connection_or_group_set_badness(or_connection_t *head, int force)
|
|||||||
if (best->is_canonical) {
|
if (best->is_canonical) {
|
||||||
log_info(LD_OR,
|
log_info(LD_OR,
|
||||||
"Marking OR conn to %s:%d as unsuitable for new circuits: "
|
"Marking OR conn to %s:%d as unsuitable for new circuits: "
|
||||||
"(fd %d, %d secs old). We have a better canonical one "
|
"(fd "TOR_SOCKET_T_FORMAT", %d secs old). "
|
||||||
"(fd %d; %d secs old).",
|
"We have a better canonical one "
|
||||||
|
"(fd "TOR_SOCKET_T_FORMAT"; %d secs old).",
|
||||||
or_conn->base_.address, or_conn->base_.port, or_conn->base_.s,
|
or_conn->base_.address, or_conn->base_.port, or_conn->base_.s,
|
||||||
(int)(now - or_conn->base_.timestamp_created),
|
(int)(now - or_conn->base_.timestamp_created),
|
||||||
best->base_.s, (int)(now - best->base_.timestamp_created));
|
best->base_.s, (int)(now - best->base_.timestamp_created));
|
||||||
@ -938,8 +939,9 @@ connection_or_group_set_badness(or_connection_t *head, int force)
|
|||||||
&best->real_addr, CMP_EXACT)) {
|
&best->real_addr, CMP_EXACT)) {
|
||||||
log_info(LD_OR,
|
log_info(LD_OR,
|
||||||
"Marking OR conn to %s:%d as unsuitable for new circuits: "
|
"Marking OR conn to %s:%d as unsuitable for new circuits: "
|
||||||
"(fd %d, %d secs old). We have a better one with the "
|
"(fd "TOR_SOCKET_T_FORMAT", %d secs old). We have a better "
|
||||||
"same address (fd %d; %d secs old).",
|
"one with the "
|
||||||
|
"same address (fd "TOR_SOCKET_T_FORMAT"; %d secs old).",
|
||||||
or_conn->base_.address, or_conn->base_.port, or_conn->base_.s,
|
or_conn->base_.address, or_conn->base_.port, or_conn->base_.s,
|
||||||
(int)(now - or_conn->base_.timestamp_created),
|
(int)(now - or_conn->base_.timestamp_created),
|
||||||
best->base_.s, (int)(now - best->base_.timestamp_created));
|
best->base_.s, (int)(now - best->base_.timestamp_created));
|
||||||
@ -1241,7 +1243,8 @@ connection_tls_start_handshake(or_connection_t *conn, int receiving)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
connection_start_reading(TO_CONN(conn));
|
connection_start_reading(TO_CONN(conn));
|
||||||
log_debug(LD_HANDSHAKE,"starting TLS handshake on fd %d", conn->base_.s);
|
log_debug(LD_HANDSHAKE,"starting TLS handshake on fd "TOR_SOCKET_T_FORMAT,
|
||||||
|
conn->base_.s);
|
||||||
note_crypto_pk_op(receiving ? TLS_HANDSHAKE_S : TLS_HANDSHAKE_C);
|
note_crypto_pk_op(receiving ? TLS_HANDSHAKE_S : TLS_HANDSHAKE_C);
|
||||||
|
|
||||||
IF_HAS_BUFFEREVENT(TO_CONN(conn), {
|
IF_HAS_BUFFEREVENT(TO_CONN(conn), {
|
||||||
@ -1898,7 +1901,8 @@ connection_or_process_cells_from_inbuf(or_connection_t *conn)
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
log_debug(LD_OR,
|
log_debug(LD_OR,
|
||||||
"%d: starting, inbuf_datalen %d (%d pending in tls object).",
|
TOR_SOCKET_T_FORMAT": starting, inbuf_datalen %d "
|
||||||
|
"(%d pending in tls object).",
|
||||||
conn->base_.s,(int)connection_get_inbuf_len(TO_CONN(conn)),
|
conn->base_.s,(int)connection_get_inbuf_len(TO_CONN(conn)),
|
||||||
tor_tls_get_pending_bytes(conn->tls));
|
tor_tls_get_pending_bytes(conn->tls));
|
||||||
if (connection_fetch_var_cell_from_buf(conn, &var_cell)) {
|
if (connection_fetch_var_cell_from_buf(conn, &var_cell)) {
|
||||||
|
@ -1220,7 +1220,8 @@ handle_control_authenticate(control_connection_t *conn, uint32_t len,
|
|||||||
connection_mark_for_close(TO_CONN(conn));
|
connection_mark_for_close(TO_CONN(conn));
|
||||||
return 0;
|
return 0;
|
||||||
ok:
|
ok:
|
||||||
log_info(LD_CONTROL, "Authenticated control connection (%d)", conn->base_.s);
|
log_info(LD_CONTROL, "Authenticated control connection ("TOR_SOCKET_T_FORMAT
|
||||||
|
")", conn->base_.s);
|
||||||
send_control_done(conn);
|
send_control_done(conn);
|
||||||
conn->base_.state = CONTROL_CONN_STATE_OPEN;
|
conn->base_.state = CONTROL_CONN_STATE_OPEN;
|
||||||
tor_free(password);
|
tor_free(password);
|
||||||
|
@ -262,7 +262,7 @@ cpuworker_main(void *data)
|
|||||||
log_info(LD_OR,
|
log_info(LD_OR,
|
||||||
"CPU worker exiting because of error on connection to Tor "
|
"CPU worker exiting because of error on connection to Tor "
|
||||||
"process.");
|
"process.");
|
||||||
log_info(LD_OR,"(Error on %d was %s)",
|
log_info(LD_OR,"(Error on "TOR_SOCKET_T_FORMAT" was %s)",
|
||||||
fd, tor_socket_strerror(tor_socket_errno(fd)));
|
fd, tor_socket_strerror(tor_socket_errno(fd)));
|
||||||
}
|
}
|
||||||
goto end;
|
goto end;
|
||||||
|
17
src/or/dns.c
17
src/or/dns.c
@ -763,12 +763,13 @@ dns_resolve_impl(edge_connection_t *exitconn, int is_resolve,
|
|||||||
pending_connection->next = resolve->pending_connections;
|
pending_connection->next = resolve->pending_connections;
|
||||||
resolve->pending_connections = pending_connection;
|
resolve->pending_connections = pending_connection;
|
||||||
*made_connection_pending_out = 1;
|
*made_connection_pending_out = 1;
|
||||||
log_debug(LD_EXIT,"Connection (fd %d) waiting for pending DNS "
|
log_debug(LD_EXIT,"Connection (fd "TOR_SOCKET_T_FORMAT") waiting "
|
||||||
"resolve of %s", exitconn->base_.s,
|
"for pending DNS resolve of %s", exitconn->base_.s,
|
||||||
escaped_safe_str(exitconn->base_.address));
|
escaped_safe_str(exitconn->base_.address));
|
||||||
return 0;
|
return 0;
|
||||||
case CACHE_STATE_CACHED_VALID:
|
case CACHE_STATE_CACHED_VALID:
|
||||||
log_debug(LD_EXIT,"Connection (fd %d) found cached answer for %s",
|
log_debug(LD_EXIT,"Connection (fd "TOR_SOCKET_T_FORMAT") found "
|
||||||
|
"cached answer for %s",
|
||||||
exitconn->base_.s,
|
exitconn->base_.s,
|
||||||
escaped_safe_str(resolve->address));
|
escaped_safe_str(resolve->address));
|
||||||
exitconn->address_ttl = resolve->ttl;
|
exitconn->address_ttl = resolve->ttl;
|
||||||
@ -780,7 +781,8 @@ dns_resolve_impl(edge_connection_t *exitconn, int is_resolve,
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
case CACHE_STATE_CACHED_FAILED:
|
case CACHE_STATE_CACHED_FAILED:
|
||||||
log_debug(LD_EXIT,"Connection (fd %d) found cached error for %s",
|
log_debug(LD_EXIT,"Connection (fd "TOR_SOCKET_T_FORMAT") found cached "
|
||||||
|
"error for %s",
|
||||||
exitconn->base_.s,
|
exitconn->base_.s,
|
||||||
escaped_safe_str(exitconn->base_.address));
|
escaped_safe_str(exitconn->base_.address));
|
||||||
return -1;
|
return -1;
|
||||||
@ -891,7 +893,7 @@ connection_dns_remove(edge_connection_t *conn)
|
|||||||
if (pend->conn == conn) {
|
if (pend->conn == conn) {
|
||||||
resolve->pending_connections = pend->next;
|
resolve->pending_connections = pend->next;
|
||||||
tor_free(pend);
|
tor_free(pend);
|
||||||
log_debug(LD_EXIT, "First connection (fd %d) no longer waiting "
|
log_debug(LD_EXIT, "First connection (fd "TOR_SOCKET_T_FORMAT") no longer waiting "
|
||||||
"for resolve of %s",
|
"for resolve of %s",
|
||||||
conn->base_.s,
|
conn->base_.s,
|
||||||
escaped_safe_str(conn->base_.address));
|
escaped_safe_str(conn->base_.address));
|
||||||
@ -903,7 +905,8 @@ connection_dns_remove(edge_connection_t *conn)
|
|||||||
pend->next = victim->next;
|
pend->next = victim->next;
|
||||||
tor_free(victim);
|
tor_free(victim);
|
||||||
log_debug(LD_EXIT,
|
log_debug(LD_EXIT,
|
||||||
"Connection (fd %d) no longer waiting for resolve of %s",
|
"Connection (fd "TOR_SOCKET_T_FORMAT") no longer waiting "
|
||||||
|
"for resolve of %s",
|
||||||
conn->base_.s, escaped_safe_str(conn->base_.address));
|
conn->base_.s, escaped_safe_str(conn->base_.address));
|
||||||
return; /* more are pending */
|
return; /* more are pending */
|
||||||
}
|
}
|
||||||
@ -1607,7 +1610,7 @@ launch_wildcard_check(int min_len, int max_len, const char *suffix)
|
|||||||
/** Launch attempts to resolve a bunch of known-good addresses (configured in
|
/** Launch attempts to resolve a bunch of known-good addresses (configured in
|
||||||
* ServerDNSTestAddresses). [Callback for a libevent timer] */
|
* ServerDNSTestAddresses). [Callback for a libevent timer] */
|
||||||
static void
|
static void
|
||||||
launch_test_addresses(int fd, short event, void *args)
|
launch_test_addresses(evutil_socket_t fd, short event, void *args)
|
||||||
{
|
{
|
||||||
const or_options_t *options = get_options();
|
const or_options_t *options = get_options();
|
||||||
struct evdns_request *req;
|
struct evdns_request *req;
|
||||||
|
@ -812,7 +812,7 @@ conn_close_if_marked(int i)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
log_debug(LD_NET,"Cleaning up connection (fd %d).",conn->s);
|
log_debug(LD_NET,"Cleaning up connection (fd "TOR_SOCKET_T_FORMAT").",conn->s);
|
||||||
|
|
||||||
/* If the connection we are about to close was trying to connect to
|
/* If the connection we are about to close was trying to connect to
|
||||||
a proxy server and failed, the client won't be able to use that
|
a proxy server and failed, the client won't be able to use that
|
||||||
|
@ -1151,7 +1151,8 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* XXX add to this log_fn the exit node's nickname? */
|
/* XXX add to this log_fn the exit node's nickname? */
|
||||||
log_info(domain,"%d: end cell (%s) for stream %d. Removing stream.",
|
log_info(domain,TOR_SOCKET_T_FORMAT": end cell (%s) for stream %d. "
|
||||||
|
"Removing stream.",
|
||||||
conn->base_.s,
|
conn->base_.s,
|
||||||
stream_end_reason_to_string(reason),
|
stream_end_reason_to_string(reason),
|
||||||
conn->stream_id);
|
conn->stream_id);
|
||||||
@ -1473,7 +1474,8 @@ connection_edge_package_raw_inbuf(edge_connection_t *conn, int package_partial,
|
|||||||
connection_fetch_from_buf(payload, length, TO_CONN(conn));
|
connection_fetch_from_buf(payload, length, TO_CONN(conn));
|
||||||
}
|
}
|
||||||
|
|
||||||
log_debug(domain,"(%d) Packaging %d bytes (%d waiting).", conn->base_.s,
|
log_debug(domain,TOR_SOCKET_T_FORMAT": Packaging %d bytes (%d waiting).",
|
||||||
|
conn->base_.s,
|
||||||
(int)length, (int)connection_get_inbuf_len(TO_CONN(conn)));
|
(int)length, (int)connection_get_inbuf_len(TO_CONN(conn)));
|
||||||
|
|
||||||
if (sending_optimistically && !sending_from_optimistic) {
|
if (sending_optimistically && !sending_from_optimistic) {
|
||||||
|
Loading…
Reference in New Issue
Block a user