]> source.dussan.org Git - rspamd.git/commitdiff
Create fuzzy db if it does not exist.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 26 Jan 2015 21:12:30 +0000 (21:12 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 26 Jan 2015 21:12:30 +0000 (21:12 +0000)
src/libserver/fuzzy_backend.c

index c513ad06f8f99e1d784ca9159a1db86a9a548544..df35e0ccf67a8707bfa5a37054557d970bd8ec54 100644 (file)
@@ -498,25 +498,30 @@ rspamd_fuzzy_backend_open (const gchar *path, GError **err)
        }
 
        g_free (dir);
+
        if ((fd = open (path, O_RDONLY)) == -1) {
-               g_set_error (err, rspamd_fuzzy_backend_quark (),
-                               errno, "Cannot open file %s: %s",
-                               path, strerror (errno));
+               if (errno != ENOENT) {
+                       g_set_error (err, rspamd_fuzzy_backend_quark (),
+                                       errno, "Cannot open file %s: %s",
+                                       path, strerror (errno));
 
-               return NULL;
+                       return NULL;
+               }
        }
+       else {
 
-       /* Check for legacy format */
-       if ((r = read (fd, header, sizeof (header))) == sizeof (header)) {
-               if (memcmp (header, FUZZY_FILE_MAGIC, sizeof (header) - 1) == 0) {
-                       msg_info ("Trying to convert old fuzzy database");
-                       if (!rspamd_fuzzy_backend_convert (path, fd, err)) {
-                               close (fd);
-                               return NULL;
+               /* Check for legacy format */
+               if ((r = read (fd, header, sizeof (header))) == sizeof (header)) {
+                       if (memcmp (header, FUZZY_FILE_MAGIC, sizeof (header) - 1) == 0) {
+                               msg_info ("Trying to convert old fuzzy database");
+                               if (!rspamd_fuzzy_backend_convert (path, fd, err)) {
+                                       close (fd);
+                                       return NULL;
+                               }
+                               msg_info ("Old database converted");
                        }
-                       msg_info ("Old database converted");
+                       close (fd);
                }
-               close (fd);
        }
 
        /* Open database */