From 98517517c664d0032b56e456c7ee9c7abc83eda8 Mon Sep 17 00:00:00 2001 From: Seungbae Shin Date: Mon, 26 Jul 2021 18:13:33 +0900 Subject: [PATCH] webrtc_signaling_server: use g_autoptr with g_mutex_locker_new This makes it convenient to manipulate concurrent mechanisms such as mutex, including unintentional infinite possessing of the resource. https://developer.gnome.org/glib/stable/glib-Threads.html#g-mutex-locker-new https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#g-autoptr [Version] 0.2.55 [Issue Type] Refactoring Change-Id: If724556eec0fd61a22026f819f72e95543c7ca44 --- packaging/capi-media-webrtc.spec | 2 +- src/webrtc_signaling_server.c | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index b2167fd7..8db218b8 100644 --- a/packaging/capi-media-webrtc.spec +++ b/packaging/capi-media-webrtc.spec @@ -1,6 +1,6 @@ Name: capi-media-webrtc Summary: A WebRTC library in Tizen Native API -Version: 0.2.54 +Version: 0.2.55 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc_signaling_server.c b/src/webrtc_signaling_server.c index 78fb83d4..3f28165f 100644 --- a/src/webrtc_signaling_server.c +++ b/src/webrtc_signaling_server.c @@ -420,14 +420,14 @@ int webrtc_signaling_server_start(webrtc_signaling_server_h server) int ret = WEBRTC_ERROR_NONE; webrtc_signaling_server_s *_server = (webrtc_signaling_server_s *)server; GError *error; + g_autoptr(GMutexLocker) locker = NULL; RET_VAL_IF(server == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "server is NULL"); - g_mutex_lock(&_server->mutex); + locker = g_mutex_locker_new(&_server->mutex); if (_server->thread) { LOG_DEBUG("thread[%p] has been already started", _server->thread); - g_mutex_unlock(&_server->mutex); return WEBRTC_ERROR_NONE; } @@ -439,8 +439,6 @@ int webrtc_signaling_server_start(webrtc_signaling_server_h server) LOG_INFO("server[%p, thread:%p]", _server, _server->thread); - g_mutex_unlock(&_server->mutex); - return ret; } @@ -465,17 +463,16 @@ static void __stop_server(webrtc_signaling_server_s *server) int webrtc_signaling_server_stop(webrtc_signaling_server_h server) { webrtc_signaling_server_s *_server = (webrtc_signaling_server_s *)server; + g_autoptr(GMutexLocker) locker = NULL; RET_VAL_IF(server == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "server is NULL"); - g_mutex_lock(&_server->mutex); + locker = g_mutex_locker_new(&_server->mutex); - RET_VAL_WITH_UNLOCK_IF(_server->thread == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_server->mutex, "thread is NULL"); + RET_VAL_IF(_server->thread == NULL, WEBRTC_ERROR_INVALID_OPERATION, "thread is NULL"); __stop_server(_server); - g_mutex_unlock(&_server->mutex); - return WEBRTC_ERROR_NONE; } -- 2.34.1