GUACAMOLE-1293: Merge fix for double acquisition/release of rwlock.

This commit is contained in:
James Muehlner 2022-11-28 14:31:44 -08:00 committed by GitHub
commit 7d16f67d6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -302,15 +302,15 @@ int guac_client_add_user(guac_client* client, guac_user* user, int argc, char**
/* Update owner pointer if user is owner */ /* Update owner pointer if user is owner */
if (user->owner) if (user->owner)
client->__owner = user; client->__owner = user;
/* Notify owner of user joining connection. */
else
guac_client_owner_notify_join(client, user);
} }
pthread_rwlock_unlock(&(client->__users_lock)); pthread_rwlock_unlock(&(client->__users_lock));
/* Notify owner of user joining connection. */
if (retval == 0 && !user->owner)
guac_client_owner_notify_join(client, user);
return retval; return retval;
} }
@ -335,12 +335,12 @@ void guac_client_remove_user(guac_client* client, guac_user* user) {
if (user->owner) if (user->owner)
client->__owner = NULL; client->__owner = NULL;
/* Update owner of user having left the connection. */
else
guac_client_owner_notify_leave(client, user);
pthread_rwlock_unlock(&(client->__users_lock)); pthread_rwlock_unlock(&(client->__users_lock));
/* Update owner of user having left the connection. */
if (!user->owner)
guac_client_owner_notify_leave(client, user);
/* Call handler, if defined */ /* Call handler, if defined */
if (user->leave_handler) if (user->leave_handler)
user->leave_handler(user); user->leave_handler(user);