diff --git a/jackd/engine.c b/jackd/engine.c index 1c51ae7..bb86b46 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -2435,6 +2435,18 @@ jack_deliver_event_to_all (jack_engine_t *engine, jack_event_t *event) jack_unlock_graph (engine); } +static jack_client_id_t jack_engine_get_max_uuid( jack_engine_t *engine ) +{ + JSList *node; + jack_client_id_t retval = 0; + for (node = engine->clients; node; node = jack_slist_next (node)) { + jack_client_internal_t* client = (jack_client_internal_t*) node->data; + if( client->control->uid > retval ) + retval = client->control->uid; + } + return retval; +} + static int jack_do_session_notify (jack_engine_t *engine, jack_request_t *req, int reply_fd ) { @@ -2456,6 +2468,8 @@ jack_do_session_notify (jack_engine_t *engine, jack_request_t *req, int reply_fd jack_client_internal_t* client = (jack_client_internal_t*) node->data; if (client->control->session_cbset) { + if( client->control->uid == 0 ) + client->control->uid=jack_engine_get_max_uuid( engine ) + 1; reply = jack_deliver_event (engine, client, &event); if (write (reply_fd, &client->control->uid, sizeof (client->control->uid)) diff --git a/libjack/client.c b/libjack/client.c index fef39f9..8ef6451 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -1116,6 +1116,8 @@ jack_client_open_aux (const char *client_name, if( va.sess_uuid ) client->control->uid = atoi( va.sess_uuid ); + else + client->control->uid = 0U; if ((ev_fd = server_event_connect (client, va.server_name)) < 0) { goto fail;