From d0439dab88545fd6a8646cdb0a51a9fa6432ff32 Mon Sep 17 00:00:00 2001 From: Patrick J Cherry Date: Fri, 16 Feb 2018 12:58:03 +0000 Subject: [PATCH] Call the thread cleanup code when requesting `status` This ensures the correct number of connected clients is returned when the status command is issued. Previously the thread pool would only be cleaned up on a new connection. --- src/server/serve.c | 2 ++ tests/acceptance/test_serve_mode.rb | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/server/serve.c b/src/server/serve.c index 3a86c3a..b7b8e44 100644 --- a/src/server/serve.c +++ b/src/server/serve.c @@ -332,6 +332,8 @@ int server_count_clients( struct server *params ) { NULLCHECK( params ); int i, count = 0; + + cleanup_client_threads( params->nbd_client, params->max_nbd_clients ); for ( i = 0 ; i < params->max_nbd_clients ; i++ ) { if ( params->nbd_client[i].thread != 0 ) { diff --git a/tests/acceptance/test_serve_mode.rb b/tests/acceptance/test_serve_mode.rb index 6c3e3f6..5bc3eb5 100644 --- a/tests/acceptance/test_serve_mode.rb +++ b/tests/acceptance/test_serve_mode.rb @@ -207,4 +207,14 @@ class TestServeMode < Test::Unit::TestCase 'TCP keepalive count not set to 3') end end + + def test_status_returns_correct_client_count + require 'pp' + connect_to_server do |client| + status = @env.status1 + assert_equal('1', status['num_clients']) + end + status = @env.status1 + assert_equal('0', status['num_clients']) + end end