]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9631 back-wt: closing cache db politely
authorHAMANO Tsukasa <hamano@osstech.co.jp>
Thu, 2 Sep 2021 05:00:36 +0000 (14:00 +0900)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 6 Sep 2021 15:19:25 +0000 (15:19 +0000)
servers/slapd/back-wt/init.c

index ba828bf109378ab11ce582d9a2c2b8b06f8a8414..730ccd261f5bc4924c3eb38f1f358d39ab221442 100644 (file)
@@ -232,20 +232,25 @@ wt_db_close( BackendDB *be, ConfigReply *cr )
        struct wt_info *wi = (struct wt_info *) be->be_private;
        int rc;
 
-       if ( !wi->wi_conn ) {
-               return -1;
+       if ( wi->wi_cache ) {
+               rc = wi->wi_cache->close(wi->wi_cache, NULL);
+               if( rc ) {
+                       Debug( LDAP_DEBUG_ANY,
+                                  "wt_db_close: cannot close cache database (%d).\n", rc );
+                       return -1;
+               }
        }
 
-       rc = wi->wi_conn->close(wi->wi_conn, NULL);
-       if( rc ) {
-               int saved_errno = errno;
-               Debug( LDAP_DEBUG_ANY,
-                          "wt_db_close: cannot close database (%d).\n", saved_errno );
-               return -1;
+       if ( wi->wi_conn ) {
+               rc = wi->wi_conn->close(wi->wi_conn, NULL);
+               if( rc ) {
+                       Debug( LDAP_DEBUG_ANY,
+                                  "wt_db_close: cannot close database (%d).\n", rc );
+                       return -1;
+               }
+               wi->wi_flags &= ~WT_IS_OPEN;
        }
 
-       wi->wi_flags &= ~WT_IS_OPEN;
-
     return LDAP_SUCCESS;
 }