Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/pazpar2
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 19 Apr 2010 10:59:31 +0000 (12:59 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 19 Apr 2010 10:59:31 +0000 (12:59 +0200)
src/client.c
src/session.c

index 0d6112b..91d0b26 100644 (file)
@@ -634,8 +634,9 @@ int client_destroy(struct client *c)
             c->pquery = 0;
             xfree(c->cqlquery);
             c->cqlquery = 0;
-
-            ZOOM_resultset_destroy(c->resultset);
+            assert(!c->connection);
+            assert(!c->resultset);
+            
             yaz_mutex_destroy(&c->mutex);
             xfree(c);
             return 1;
@@ -646,6 +647,11 @@ int client_destroy(struct client *c)
 
 void client_set_connection(struct client *cl, struct connection *con)
 {
+    if (cl->resultset)
+    {
+        ZOOM_resultset_destroy(cl->resultset);
+        cl->resultset = 0;
+    }
     if (con)
     {
         assert(cl->connection == 0);
index c0f9c16..676627c 100644 (file)
@@ -451,15 +451,8 @@ static void select_targets_callback(void *context, struct session_database *db)
 
 static void session_remove_clients(struct session *se)
 {
-    struct client *cl = se->clients;
-    while (cl)
-    {
-        struct client *cl_next = client_next_in_session(cl);
-        client_remove_from_session(cl);
-        client_destroy(cl);
-        cl = cl_next;
-    }
-    se->clients = 0;
+    while (se->clients)
+        client_remove_from_session(se->clients);
 }
 
 // Associates a set of clients with a session;