mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
but don't spring the trip on worker children, because it turns
out they don't actually remove anything before freeing the conns. svn:r3476
This commit is contained in:
parent
d6489d8e41
commit
692a57c8e8
@ -140,11 +140,9 @@ connection_t *connection_new(int type) {
|
|||||||
* close its socket if necessary, and mark the directory as dirty if <b>conn</b>
|
* close its socket if necessary, and mark the directory as dirty if <b>conn</b>
|
||||||
* is an OR or OP connection.
|
* is an OR or OP connection.
|
||||||
*/
|
*/
|
||||||
void connection_free(connection_t *conn) {
|
static void
|
||||||
tor_assert(conn);
|
_connection_free(connection_t *conn) {
|
||||||
tor_assert(conn->magic == CONNECTION_MAGIC);
|
tor_assert(conn->magic == CONNECTION_MAGIC);
|
||||||
tor_assert(!connection_in_array(conn));
|
|
||||||
tor_assert(!connection_is_on_closeable_list(conn));
|
|
||||||
|
|
||||||
if (!connection_is_listener(conn)) {
|
if (!connection_is_listener(conn)) {
|
||||||
buf_free(conn->inbuf);
|
buf_free(conn->inbuf);
|
||||||
@ -181,9 +179,21 @@ void connection_free(connection_t *conn) {
|
|||||||
tor_free(conn);
|
tor_free(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Call connection_free() on every connection in our array.
|
/** Make sure <b>conn</b> isn't in any of the global conn lists; then free it.
|
||||||
|
*/
|
||||||
|
void connection_free(connection_t *conn) {
|
||||||
|
tor_assert(conn);
|
||||||
|
tor_assert(!connection_is_on_closeable_list(conn));
|
||||||
|
tor_assert(!connection_in_array(conn));
|
||||||
|
_connection_free(conn);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Call _connection_free() on every connection in our array.
|
||||||
* This is used by cpuworkers and dnsworkers when they fork,
|
* This is used by cpuworkers and dnsworkers when they fork,
|
||||||
* so they don't keep resources held open (especially sockets).
|
* so they don't keep resources held open (especially sockets).
|
||||||
|
*
|
||||||
|
* Don't do the checks in connection_free(), because they will
|
||||||
|
* fail.
|
||||||
*/
|
*/
|
||||||
void connection_free_all(void) {
|
void connection_free_all(void) {
|
||||||
int i, n;
|
int i, n;
|
||||||
@ -191,7 +201,7 @@ void connection_free_all(void) {
|
|||||||
|
|
||||||
get_connection_array(&carray,&n);
|
get_connection_array(&carray,&n);
|
||||||
for (i=0;i<n;i++)
|
for (i=0;i<n;i++)
|
||||||
connection_free(carray[i]);
|
_connection_free(carray[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Do any cleanup needed:
|
/** Do any cleanup needed:
|
||||||
|
Loading…
Reference in New Issue
Block a user