All pastes #210243 Raw Edit

Anonymous

public text v1 · immutable
#210243 ·published 2006-10-19 16:41 UTC
rendered paste body
Index: connhub.cpp
===================================================================
RCS file: /cvsroot/alcc/alcc/connhub.cpp,v
retrieving revision 1.15
diff -u -r1.15 connhub.cpp
--- connhub.cpp	19 Oct 2006 00:02:03 -0000	1.15
+++ connhub.cpp	19 Oct 2006 16:40:00 -0000
@@ -224,7 +224,6 @@
                      "Registering %d as 0x%hx\n", connFD, how);
 #endif
 
-    pthread_mutex_lock (&poolAccessMutex);
     if (!connections.count (connFD))            // Add a new connection
     {
         // The handle mechanism is there precisely to eliminate clone
@@ -243,7 +242,9 @@
         pollStruct.events = how;
         pollStruct.revents = 0;
 
+        pthread_mutex_lock (&poolAccessMutex);
         pool.insert (pool.end (), pollStruct);
+        pthread_mutex_unlock (&poolAccessMutex);
 
         if (conn->getHandle () != NULL)
         {
@@ -253,12 +254,14 @@
     }
     else                                        // Update the expected events
     {
+        pthread_mutex_lock (&poolAccessMutex);
         for (it = pool.begin (); it != pool.end (); it++)
         {
             if (it->fd == connFD)
             {
                 it->events = how;
-                break;
+                pthread_mutex_unlock (&poolAccessMutex);
+                return;
             }
         }
         if (it == pool.end ())
@@ -269,8 +272,8 @@
                              "Could not find the descriptor for updating\n");
 #endif
         }
+        pthread_mutex_unlock (&poolAccessMutex);
     }
-    pthread_mutex_unlock (&poolAccessMutex);
 }
 
 /*