gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r5204 - GNUnet/src/server


From: gnunet
Subject: [GNUnet-SVN] r5204 - GNUnet/src/server
Date: Sun, 1 Jul 2007 06:52:23 -0600 (MDT)

Author: grothoff
Date: 2007-07-01 06:52:23 -0600 (Sun, 01 Jul 2007)
New Revision: 5204

Modified:
   GNUnet/src/server/handler.c
Log:
fix

Modified: GNUnet/src/server/handler.c
===================================================================
--- GNUnet/src/server/handler.c 2007-07-01 12:26:27 UTC (rev 5203)
+++ GNUnet/src/server/handler.c 2007-07-01 12:52:23 UTC (rev 5204)
@@ -132,12 +132,11 @@
                       MessagePartHandler callback) {
   unsigned int last;
 
-  MUTEX_LOCK(handlerLock);
   if (threads_running == YES) {
     GE_BREAK(ectx, NULL);
-    MUTEX_UNLOCK(handlerLock);
     return SYSERR;
   }
+  MUTEX_LOCK(handlerLock);
   if (type >= max_registeredType) {
     unsigned int ort = max_registeredType;
     GROW(handlers,
@@ -176,12 +175,11 @@
   unsigned int pos;
   unsigned int last;
 
-  MUTEX_LOCK(handlerLock);
   if (threads_running == YES) {
     GE_BREAK(ectx, 0);
-    MUTEX_UNLOCK(handlerLock);
     return SYSERR;
   }
+  MUTEX_LOCK(handlerLock);
   if (type < max_registeredType) {
     pos = 0;
     while ( (handlers[type][pos] != NULL) &&
@@ -223,12 +221,11 @@
                             PlaintextMessagePartHandler callback) {
   unsigned int last;
 
-  MUTEX_LOCK(handlerLock);
   if (threads_running == YES) {
-    MUTEX_UNLOCK(handlerLock);
     GE_BREAK(ectx, 0);
     return SYSERR;
   }
+  MUTEX_LOCK(handlerLock);
   if (type >= plaintextmax_registeredType) {
     unsigned int ort = plaintextmax_registeredType;
     GROW(plaintextHandlers,
@@ -267,12 +264,11 @@
   unsigned int pos;
   unsigned int last;
 
-  MUTEX_LOCK(handlerLock);
   if (threads_running == YES) {
     GE_BREAK(ectx, 0);
-    MUTEX_UNLOCK(handlerLock);
     return SYSERR;
   }
+  MUTEX_LOCK(handlerLock);
   if (type < plaintextmax_registeredType) {
     pos = 0;
     while ( (plaintextHandlers[type][pos] != NULL) &&
@@ -592,7 +588,7 @@
 void core_receive(P2P_PACKET * mp) {
   if ( (threads_running == NO) ||
        (mainShutdownSignal != NULL) ||
-       (SYSERR == SEMAPHORE_DOWN(bufferQueueWrite_, YES)) ) {
+       (SYSERR == SEMAPHORE_DOWN(bufferQueueWrite_, NO)) ) {
     /* discard message, buffer is full or
        we're shut down! */
     GE_LOG(ectx,
@@ -657,9 +653,7 @@
   bq_firstFull_ = 0;
 
   /* create message handling threads */
-  MUTEX_LOCK(handlerLock);
   threads_running = YES;
-  MUTEX_UNLOCK(handlerLock);
   for (i=0;i<THREAD_COUNT;i++) {
     threads_[i] = PTHREAD_CREATE(&threadMain,
                                 &i,
@@ -679,6 +673,7 @@
   void * unused;
 
   /* shutdown processing of inbound messages... */
+  threads_running = NO;
   mainShutdownSignal = SEMAPHORE_CREATE(0);
   for (i=0;i<THREAD_COUNT;i++) {
     SEMAPHORE_UP(bufferQueueRead_);
@@ -688,9 +683,6 @@
     PTHREAD_JOIN(threads_[i], &unused);
     threads_[i] = NULL;
   }
-  MUTEX_LOCK(handlerLock);
-  threads_running = NO;
-  MUTEX_UNLOCK(handlerLock);
   SEMAPHORE_DESTROY(mainShutdownSignal);
   mainShutdownSignal = NULL;
   MUTEX_DESTROY(globalLock_);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]