fr_io_client_t *client = talloc_get_type_abort(data, fr_io_client_t);
int connections;
- /*
- * This client has no connections, skip the mutex lock.
- */
- if (!client->ht) return 0;
+ pthread_mutex_lock(&client->mutex);
- fr_assert(client->use_connected);
+ if (!client->ht) {
+ pthread_mutex_unlock(&client->mutex);
+ return 0;
+ }
- pthread_mutex_lock(&client->mutex);
connections = fr_hash_table_num_elements(client->ht);
pthread_mutex_unlock(&client->mutex);
+ fr_assert(client->use_connected);
*((uint32_t *) ctx) += connections;
return 0;
if (connection) {
fr_io_client_t *parent = connection->parent;
- if (parent->ht) {
- pthread_mutex_lock(&parent->mutex);
- (void) fr_hash_table_delete(parent->ht, connection);
- pthread_mutex_unlock(&parent->mutex);
- }
+ pthread_mutex_lock(&parent->mutex);
+ if (parent->ht) (void) fr_hash_table_delete(parent->ht, connection);
+ pthread_mutex_unlock(&parent->mutex);
/*
* Mark the connection as dead, and tell
* Remove connection from parent hash table
*/
parent = connection->parent;
- if (parent->ht) {
- pthread_mutex_lock(&parent->mutex);
- (void) fr_hash_table_delete(parent->ht, connection);
- pthread_mutex_unlock(&parent->mutex);
- }
+ pthread_mutex_lock(&parent->mutex);
+ if (parent->ht) (void) fr_hash_table_delete(parent->ht, connection);
+ pthread_mutex_unlock(&parent->mutex);
/*
* Clean up listener