Web pgadmin.org
 Home 
 ·  ·  ·  ·  ·  ·  · 
SVN Commit by dpage: r4226 - trunk/pgadmin3/xtra/pgagent

SVN Commit by dpage: r4226 - trunk/pgadmin3/xtra/pgagent



Author: dpage
Date: 2005-05-20 12:25:24 +0100 (Fri, 20 May 2005)
New Revision: 4226

Modified:
   trunk/pgadmin3/xtra/pgagent/connection.cpp
Log:
Only clear down connections that are not in use.

Modified: trunk/pgadmin3/xtra/pgagent/connection.cpp
===================================================================
--- trunk/pgadmin3/xtra/pgagent/connection.cpp	2005-05-20 09:29:33 UTC (rev 4225)
+++ trunk/pgadmin3/xtra/pgagent/connection.cpp	2005-05-20 11:25:24 UTC (rev 4226)
@@ -142,7 +142,7 @@
 	if (all)
 		LogMessage("Clearing all connections", LOG_DEBUG);
 	else
-		LogMessage("Clearing all connections except the primary", LOG_DEBUG);
+		LogMessage("Clearing inactive connections", LOG_DEBUG);
 
 	DBconn *thisConn=primaryConn, *deleteConn;
 
@@ -151,12 +151,27 @@
 		thisConn = thisConn->next;
 
 	// Delete connections as required
+	// If a connection is not in use, delete it, and reset the next and previous
+	// pointers appropriately. If it is in use, don't touch it.
 	while (thisConn->prev != 0)
 	{
-		deleteConn = thisConn;
-		thisConn = deleteConn->prev;
-		delete deleteConn;
-		thisConn->next = 0;
+		if ((!thisConn->inUse) || all)
+		{
+			deleteConn = thisConn;
+
+			thisConn = deleteConn->prev;
+			
+			thisConn->next = deleteConn->next;
+			
+			if (deleteConn->next)
+				deleteConn->next->prev = deleteConn->prev;
+			
+			delete deleteConn;
+		}
+		else
+		{
+			thisConn = thisConn->prev;
+		}
 	}
 
 	if (all)




Home | Main Index | Thread Index

top