You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by bp...@apache.org on 2014/06/08 22:55:11 UTC

svn commit: r1601257 - /incubator/celix/trunk/log_service/private/src/log.c

Author: bpetri
Date: Sun Jun  8 20:55:11 2014
New Revision: 1601257

URL: http://svn.apache.org/r1601257
Log:
CELIX-114

Patch committed for potential deadlock



Modified:
    incubator/celix/trunk/log_service/private/src/log.c

Modified: incubator/celix/trunk/log_service/private/src/log.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/log_service/private/src/log.c?rev=1601257&r1=1601256&r2=1601257&view=diff
==============================================================================
--- incubator/celix/trunk/log_service/private/src/log.c (original)
+++ incubator/celix/trunk/log_service/private/src/log.c Sun Jun  8 20:55:11 2014
@@ -285,14 +285,10 @@ static celix_status_t log_stopListenerTh
     celix_status_t status = CELIX_SUCCESS;
     apr_status_t apr_status = APR_SUCCESS;
 
-    if (apr_status != APR_SUCCESS) {
+    logger->running = false;
+    status = apr_thread_cond_signal(logger->entriesToDeliver);
+    if (status != APR_SUCCESS) {
         status = CELIX_SERVICE_EXCEPTION;
-    } else {
-        logger->running = false;
-        status = apr_thread_cond_signal(logger->entriesToDeliver);
-        if (status != APR_SUCCESS) {
-            status = CELIX_SERVICE_EXCEPTION;
-        }
     }
 
     return status;
@@ -330,7 +326,7 @@ void * APR_THREAD_FUNC log_listenerThrea
                 }
             }
 
-            if (arrayList_isEmpty(logger->listenerEntries)) {
+            if (arrayList_isEmpty(logger->listenerEntries) && logger->running) {
                 apr_thread_cond_wait(logger->entriesToDeliver, logger->deliverLock);
             }