mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
Merge remote-tracking branch 'origin/maint-0.2.4'
This commit is contained in:
commit
e54a5a4f3c
3 changed files with 26 additions and 9 deletions
3
changes/bug8185_diagnostic
Normal file
3
changes/bug8185_diagnostic
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
o Minor features:
|
||||||
|
- Improve debugging output to attempt to diagnose the underlying
|
||||||
|
cause of bug 8185.
|
|
@ -379,15 +379,22 @@ relay_crypt(circuit_t *circ, cell_t *cell, cell_direction_t cell_direction,
|
||||||
static int
|
static int
|
||||||
circuit_package_relay_cell(cell_t *cell, circuit_t *circ,
|
circuit_package_relay_cell(cell_t *cell, circuit_t *circ,
|
||||||
cell_direction_t cell_direction,
|
cell_direction_t cell_direction,
|
||||||
crypt_path_t *layer_hint, streamid_t on_stream)
|
crypt_path_t *layer_hint, streamid_t on_stream,
|
||||||
|
const char *filename, int lineno)
|
||||||
{
|
{
|
||||||
channel_t *chan; /* where to send the cell */
|
channel_t *chan; /* where to send the cell */
|
||||||
|
|
||||||
if (cell_direction == CELL_DIRECTION_OUT) {
|
if (cell_direction == CELL_DIRECTION_OUT) {
|
||||||
crypt_path_t *thishop; /* counter for repeated crypts */
|
crypt_path_t *thishop; /* counter for repeated crypts */
|
||||||
chan = circ->n_chan;
|
chan = circ->n_chan;
|
||||||
if (!CIRCUIT_IS_ORIGIN(circ) || !chan) {
|
if (!chan) {
|
||||||
log_warn(LD_BUG,"outgoing relay cell has n_chan==NULL. Dropping.");
|
log_warn(LD_BUG,"outgoing relay cell sent from %s:%d has n_chan==NULL."
|
||||||
|
" Dropping.", filename, lineno);
|
||||||
|
return 0; /* just drop it */
|
||||||
|
}
|
||||||
|
if (!CIRCUIT_IS_ORIGIN(circ)) {
|
||||||
|
log_warn(LD_BUG,"outgoing relay cell sent from %s:%d on non-origin "
|
||||||
|
"circ. Dropping.", filename, lineno);
|
||||||
return 0; /* just drop it */
|
return 0; /* just drop it */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -548,9 +555,10 @@ relay_command_to_string(uint8_t command)
|
||||||
* return 0.
|
* return 0.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ,
|
relay_send_command_from_edge_(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,
|
||||||
|
const char *filename, int lineno)
|
||||||
{
|
{
|
||||||
cell_t cell;
|
cell_t cell;
|
||||||
relay_header_t rh;
|
relay_header_t rh;
|
||||||
|
@ -633,7 +641,7 @@ relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (circuit_package_relay_cell(&cell, circ, cell_direction, cpath_layer,
|
if (circuit_package_relay_cell(&cell, circ, cell_direction, cpath_layer,
|
||||||
stream_id) < 0) {
|
stream_id, filename, lineno) < 0) {
|
||||||
log_warn(LD_BUG,"circuit_package_relay_cell failed. Closing.");
|
log_warn(LD_BUG,"circuit_package_relay_cell failed. Closing.");
|
||||||
circuit_mark_for_close(circ, END_CIRC_REASON_INTERNAL);
|
circuit_mark_for_close(circ, END_CIRC_REASON_INTERNAL);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -20,9 +20,15 @@ int circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
|
||||||
|
|
||||||
void relay_header_pack(uint8_t *dest, const relay_header_t *src);
|
void relay_header_pack(uint8_t *dest, const relay_header_t *src);
|
||||||
void relay_header_unpack(relay_header_t *dest, const uint8_t *src);
|
void relay_header_unpack(relay_header_t *dest, const uint8_t *src);
|
||||||
int relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ,
|
int relay_send_command_from_edge_(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,
|
||||||
|
const char *filename, int lineno);
|
||||||
|
#define relay_send_command_from_edge(stream_id, circ, relay_command, payload, \
|
||||||
|
payload_len, cpath_layer) \
|
||||||
|
relay_send_command_from_edge_((stream_id), (circ), (relay_command), \
|
||||||
|
(payload), (payload_len), (cpath_layer), \
|
||||||
|
__FILE__, __LINE__)
|
||||||
int connection_edge_send_command(edge_connection_t *fromconn,
|
int connection_edge_send_command(edge_connection_t *fromconn,
|
||||||
uint8_t relay_command, const char *payload,
|
uint8_t relay_command, const char *payload,
|
||||||
size_t payload_len);
|
size_t payload_len);
|
||||||
|
|
Loading…
Add table
Reference in a new issue