From 91c57cb06cbf0bd88e267923be58df8def7854a7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 27 Nov 2013 16:07:16 -0500 Subject: [PATCH] fix error in handling of -T (temporary server) caused by cast to wrong type when checking client list (also added extra debugging/VERBOSE statements) --- jackd/clientengine.c | 8 ++++++-- libjack/client.c | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/jackd/clientengine.c b/jackd/clientengine.c index 5e5e1ae..157de5d 100644 --- a/jackd/clientengine.c +++ b/jackd/clientengine.c @@ -217,16 +217,20 @@ jack_remove_client (jack_engine_t *engine, jack_client_internal_t *client) close (client->request_fd); } + VERBOSE (engine, "before: client list contains %d", jack_slist_length (engine->clients)); + for (node = engine->clients; node; node = jack_slist_next (node)) { if (jack_uuid_compare (((jack_client_internal_t *) node->data)->control->uuid, client->control->uuid) == 0) { engine->clients = jack_slist_remove_link (engine->clients, node); jack_slist_free_1 (node); + VERBOSE (engine, "removed from client list, via matching UUID"); break; } } - jack_client_delete (engine, client); + VERBOSE (engine, "after: client list contains %d", jack_slist_length (engine->clients)); + jack_client_delete (engine, client); if (engine->temporary) { int external_clients = 0; @@ -234,7 +238,7 @@ jack_remove_client (jack_engine_t *engine, jack_client_internal_t *client) /* count external clients only when deciding whether to shutdown */ for (node = engine->clients; node; node = jack_slist_next (node)) { - jack_client_t* client = (jack_client_t*) node->data; + jack_client_internal_t* client = (jack_client_internal_t*) node->data; if (client->control->type == ClientExternal) { external_clients++; } diff --git a/libjack/client.c b/libjack/client.c index 692ab21..21cb544 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -2042,7 +2042,7 @@ jack_client_core_wait (jack_client_t* client) */ if (client->upstream_is_jackd) { - DEBUG ("WE DIE\n"); + DEBUG ("WE (%s) DIE\n", client->name); return 0; } else { DEBUG ("WE PUNT\n");