mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
lay a trap for situations where we connection_free something
that's still on one of the lists. in particular, this will detect situations where we mark-for-close and then free it ourselves. svn:r3475
This commit is contained in:
parent
75b45bcd4d
commit
d6489d8e41
@ -143,6 +143,8 @@ connection_t *connection_new(int type) {
|
||||
void connection_free(connection_t *conn) {
|
||||
tor_assert(conn);
|
||||
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)) {
|
||||
buf_free(conn->inbuf);
|
||||
|
@ -206,6 +206,11 @@ add_connection_to_closeable_list(connection_t *conn)
|
||||
smartlist_add(closeable_connection_lst, conn);
|
||||
}
|
||||
|
||||
/** Return 1 if conn is on the closeable list, else return 0. */
|
||||
int connection_is_on_closeable_list(connection_t *conn) {
|
||||
return smartlist_isin(closeable_connection_lst, conn);
|
||||
}
|
||||
|
||||
/** Return true iff conn is in the current poll array. */
|
||||
int connection_in_array(connection_t *conn) {
|
||||
int i;
|
||||
|
@ -1393,6 +1393,7 @@ int connection_add(connection_t *conn);
|
||||
int connection_remove(connection_t *conn);
|
||||
int connection_in_array(connection_t *conn);
|
||||
void add_connection_to_closeable_list(connection_t *conn);
|
||||
int connection_is_on_closeable_list(connection_t *conn);
|
||||
|
||||
void get_connection_array(connection_t ***array, int *n);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user