From 457373bf3ff3c875a8626824c2068aed7a4c989e Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 15 Sep 2010 09:36:17 -0400
Subject: [PATCH] - Fix: close() method of addressbook object(s) is not called in shutdown function

---
 program/include/rcmail.php |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 0a7c15d..e911119 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -45,6 +45,7 @@
   public $comm_path = './';
 
   private $texts;
+  private $books = array();
 
 
   /**
@@ -279,6 +280,10 @@
     else { // $id == 'sql'
       $contacts = new rcube_contacts($this->db, $this->user->ID);
     }
+
+    // add to the 'books' array for shutdown function
+    if (!in_array($contacts, $this->books))
+      $this->books[] = $contacts;
 
     return $contacts;
   }
@@ -974,8 +979,9 @@
     if (is_object($this->smtp))
       $this->smtp->disconnect();
 
-    if (is_object($this->contacts))
-      $this->contacts->close();
+    foreach ($this->books as $book)
+      if (is_object($book))
+        $book->close();
 
     // before closing the database connection, write session data
     if ($_SERVER['REMOTE_ADDR'])

--
Gitblit v1.9.1