Use the correct function signatures in test_relaycell.c

This is now officially an antipattern: please let's never copy a
function declaration in two places again.  That's what headers are
for.
This commit is contained in:
Nick Mathewson 2018-09-18 15:07:02 -04:00
parent 965549aa07
commit 370d9922a4
3 changed files with 32 additions and 42 deletions

View File

@ -155,11 +155,6 @@ static int connection_ap_process_natd(entry_connection_t *conn);
static int connection_exit_connect_dir(edge_connection_t *exitconn); static int connection_exit_connect_dir(edge_connection_t *exitconn);
static int consider_plaintext_ports(entry_connection_t *conn, uint16_t port); static int consider_plaintext_ports(entry_connection_t *conn, uint16_t port);
static int connection_ap_supports_optimistic_data(const entry_connection_t *); static int connection_ap_supports_optimistic_data(const entry_connection_t *);
STATIC void connection_half_edge_add(const edge_connection_t *conn,
origin_circuit_t *circ);
STATIC half_edge_t *connection_half_edge_find_stream_id(
const smartlist_t *half_conns,
streamid_t stream_id);
/** Convert a connection_t* to an edge_connection_t*; assert if the cast is /** Convert a connection_t* to an edge_connection_t*; assert if the cast is
* invalid. */ * invalid. */

View File

@ -254,6 +254,12 @@ STATIC void connection_ap_handshake_rewrite(entry_connection_t *conn,
rewrite_result_t *out); rewrite_result_t *out);
STATIC int connection_ap_process_http_connect(entry_connection_t *conn); STATIC int connection_ap_process_http_connect(entry_connection_t *conn);
struct half_edge_t;
STATIC void connection_half_edge_add(const edge_connection_t *conn,
origin_circuit_t *circ);
STATIC struct half_edge_t *connection_half_edge_find_stream_id(
const smartlist_t *half_conns,
streamid_t stream_id);
#endif /* defined(CONNECTION_EDGE_PRIVATE) */ #endif /* defined(CONNECTION_EDGE_PRIVATE) */
#endif /* !defined(TOR_CONNECTION_EDGE_H) */ #endif /* !defined(TOR_CONNECTION_EDGE_H) */

View File

@ -5,6 +5,9 @@
#define RELAY_PRIVATE #define RELAY_PRIVATE
#define CIRCUITLIST_PRIVATE #define CIRCUITLIST_PRIVATE
#define CONNECTION_EDGE_PRIVATE
#define CONNECTION_PRIVATE
#include "core/or/or.h" #include "core/or/or.h"
#include "core/mainloop/main.h" #include "core/mainloop/main.h"
#include "app/config/config.h" #include "app/config/config.h"
@ -25,6 +28,9 @@
#include "core/or/socks_request_st.h" #include "core/or/socks_request_st.h"
#include "core/or/half_edge_st.h" #include "core/or/half_edge_st.h"
#include "feature/client/circpathbias.h"
#include "core/or/connection_edge.h"
static int srm_ncalls; static int srm_ncalls;
static entry_connection_t *srm_conn; static entry_connection_t *srm_conn;
static int srm_atype; static int srm_atype;
@ -34,23 +40,6 @@ static uint8_t srm_answer[512];
static int srm_ttl; static int srm_ttl;
static time_t srm_expires; static time_t srm_expires;
void connection_free_minimal(connection_t*);
int connected_cell_format_payload(uint8_t *payload_out,
const tor_addr_t *addr,
uint32_t ttl);
void pathbias_count_valid_cells(origin_circuit_t *circ,
cell_t *cell);
half_edge_t *connection_half_edge_find_stream_id(
const smartlist_t *half_conns,
streamid_t stream_id);
void connection_half_edge_add(const edge_connection_t *conn,
origin_circuit_t *circ);
int mock_send_command(streamid_t stream_id, circuit_t *circ,
uint8_t relay_command, const char *payload,
size_t payload_len, crypt_path_t *cpath_layer,
const char *filename, int lineno);
/* Mock replacement for connection_ap_hannshake_socks_resolved() */ /* Mock replacement for connection_ap_hannshake_socks_resolved() */
static void static void
socks_resolved_mock(entry_connection_t *conn, socks_resolved_mock(entry_connection_t *conn,
@ -150,7 +139,7 @@ mock_start_reading(connection_t *conn)
return; return;
} }
int static int
mock_send_command(streamid_t stream_id, circuit_t *circ, mock_send_command(streamid_t stream_id, circuit_t *circ,
uint8_t relay_command, const char *payload, uint8_t relay_command, const char *payload,
size_t payload_len, crypt_path_t *cpath_layer, size_t payload_len, crypt_path_t *cpath_layer,
@ -237,7 +226,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
/* Data cell not in the half-opened list */ /* Data cell not in the half-opened list */
PACK_CELL(4000, RELAY_COMMAND_DATA, "Data1234"); PACK_CELL(4000, RELAY_COMMAND_DATA, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -246,7 +235,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
/* Sendme cell not in the half-opened list */ /* Sendme cell not in the half-opened list */
PACK_CELL(4000, RELAY_COMMAND_SENDME, "Data1234"); PACK_CELL(4000, RELAY_COMMAND_SENDME, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -255,7 +244,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
/* Connected cell not in the half-opened list */ /* Connected cell not in the half-opened list */
PACK_CELL(4000, RELAY_COMMAND_CONNECTED, "Data1234"); PACK_CELL(4000, RELAY_COMMAND_CONNECTED, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -264,7 +253,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
/* Resolved cell not in the half-opened list */ /* Resolved cell not in the half-opened list */
PACK_CELL(4000, RELAY_COMMAND_RESOLVED, "Data1234"); PACK_CELL(4000, RELAY_COMMAND_RESOLVED, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -274,7 +263,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
edgeconn = ENTRY_TO_EDGE_CONN(entryconn2); edgeconn = ENTRY_TO_EDGE_CONN(entryconn2);
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_CONNECTED, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_CONNECTED, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -286,7 +275,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_DATA, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_DATA, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -297,7 +286,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_DATA, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_DATA, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -309,7 +298,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_SENDME, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_SENDME, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -320,7 +309,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_SENDME, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_SENDME, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -331,7 +320,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_END, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_END, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -341,7 +330,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn2)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_END, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_END, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -366,7 +355,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
connection_edge_reached_eof(edgeconn); connection_edge_reached_eof(edgeconn);
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_CONNECTED, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_CONNECTED, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -376,7 +365,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn3)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn3)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_CONNECTED, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_CONNECTED, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -387,7 +376,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn3)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn3)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_END, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_END, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -406,7 +395,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn3)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn3)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_DATA, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_DATA, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -426,7 +415,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_RESOLVED, PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_RESOLVED,
"\x04\x04\x12\x00\x00\x01\x00\x00\x02\x00"); "\x04\x04\x12\x00\x00\x01\x00\x00\x02\x00");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -445,7 +434,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn4)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn4)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_DATA, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_DATA, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -456,7 +445,7 @@ subtest_circbw_halfclosed(origin_circuit_t *circ, streamid_t init_id)
ENTRY_TO_CONN(entryconn4)->outbuf_flushlen = 0; ENTRY_TO_CONN(entryconn4)->outbuf_flushlen = 0;
PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_END, "Data1234"); PACK_CELL(edgeconn->stream_id, RELAY_COMMAND_END, "Data1234");
if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING) if (circ->base_.purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING)
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
else else
connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL, connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), NULL,
circ->cpath); circ->cpath);
@ -877,7 +866,7 @@ test_circbw_relay(void *arg)
/* Path bias: truncated */ /* Path bias: truncated */
tt_int_op(circ->base_.marked_for_close, OP_EQ, 0); tt_int_op(circ->base_.marked_for_close, OP_EQ, 0);
PACK_CELL(0, RELAY_COMMAND_TRUNCATED, "Data1234"); PACK_CELL(0, RELAY_COMMAND_TRUNCATED, "Data1234");
pathbias_count_valid_cells(circ, &cell); pathbias_count_valid_cells(TO_CIRCUIT(circ), &cell);
tt_int_op(circ->base_.marked_for_close, OP_EQ, 1); tt_int_op(circ->base_.marked_for_close, OP_EQ, 1);
done: done: