diff --git a/src/or/connection.c b/src/or/connection.c index 5299e8965c..03134d3355 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -128,6 +128,15 @@ void connection_free(connection_t *conn) { free(conn); } +void connection_free_all(void) { + int i, n; + connection_t **carray; + + get_connection_array(&carray,&n); + for(i=0;i num_dnsworkers_needed+MAX_IDLE_DNSWORKERS) { /* too many idle? */ + while(num_dnsworkers > num_dnsworkers_busy+MAX_IDLE_DNSWORKERS) { /* too many idle? */ /* cull excess workers */ log_fn(LOG_WARN,"%d of %d dnsworkers are idle. Killing one.", num_dnsworkers-num_dnsworkers_needed, num_dnsworkers); diff --git a/src/or/or.h b/src/or/or.h index 76d2afeb5c..b7e323b3d0 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -615,6 +615,7 @@ int getconfig(int argc, char **argv, or_options_t *options); connection_t *connection_new(int type); void connection_free(connection_t *conn); +void connection_free_all(void); int connection_create_listener(char *bindaddress, uint16_t bindport, int type);