diff --git a/ot_mutex.c b/ot_mutex.c index 0127721..925eb27 100644 --- a/ot_mutex.c +++ b/ot_mutex.c @@ -74,6 +74,7 @@ static void bucket_remove( int bucket ) { --bucket_locklist_count; } +/* Can block */ ot_vector *mutex_bucket_lock( int bucket ) { pthread_mutex_lock( &bucket_mutex ); while( bucket_check( bucket ) ) @@ -84,11 +85,7 @@ ot_vector *mutex_bucket_lock( int bucket ) { } ot_vector *mutex_bucket_lock_by_hash( ot_hash hash ) { - int bucket = uint32_read_big( (char*)hash ) >> OT_BUCKET_COUNT_SHIFT; - - /* Can block */ - mutex_bucket_lock( bucket ); - return all_torrents + bucket; + return mutex_bucket_lock( uint32_read_big( (char*)hash ) >> OT_BUCKET_COUNT_SHIFT ); } void mutex_bucket_unlock( int bucket, int delta_torrentcount ) {