mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
When counting memory from closing a connection, count the dir conn too
Fix part of bug 11972
This commit is contained in:
parent
2937de2180
commit
ec59167cae
5
changes/bug11792
Normal file
5
changes/bug11792
Normal file
@ -0,0 +1,5 @@
|
||||
o Minor features (security, OOM):
|
||||
- When closing an edge connection because we've run out of memory,
|
||||
also count the amount of memory that any tunnelled directory
|
||||
connection attached to that connection had consumed. Part of
|
||||
ticket 11792.
|
@ -1799,6 +1799,21 @@ marked_circuit_free_cells(circuit_t *circ)
|
||||
cell_queue_clear(& TO_OR_CIRCUIT(circ)->p_chan_cells);
|
||||
}
|
||||
|
||||
static size_t
|
||||
marked_circuit_single_conn_free_bytes(connection_t *conn)
|
||||
{
|
||||
size_t result = 0;
|
||||
if (conn->inbuf) {
|
||||
result += buf_allocation(conn->inbuf);
|
||||
buf_clear(conn->inbuf);
|
||||
}
|
||||
if (conn->outbuf) {
|
||||
result += buf_allocation(conn->outbuf);
|
||||
buf_clear(conn->outbuf);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Aggressively free buffer contents on all the buffers of all streams in the
|
||||
* list starting at <b>stream</b>. Return the number of bytes recovered. */
|
||||
static size_t
|
||||
@ -1807,13 +1822,9 @@ marked_circuit_streams_free_bytes(edge_connection_t *stream)
|
||||
size_t result = 0;
|
||||
for ( ; stream; stream = stream->next_stream) {
|
||||
connection_t *conn = TO_CONN(stream);
|
||||
if (conn->inbuf) {
|
||||
result += buf_allocation(conn->inbuf);
|
||||
buf_clear(conn->inbuf);
|
||||
}
|
||||
if (conn->outbuf) {
|
||||
result += buf_allocation(conn->outbuf);
|
||||
buf_clear(conn->outbuf);
|
||||
result += marked_circuit_single_conn_free_bytes(conn);
|
||||
if (conn->linked_conn) {
|
||||
result += marked_circuit_single_conn_free_bytes(conn->linked_conn);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
Loading…
Reference in New Issue
Block a user