gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r18676 - gnunet/src/datastore


From: gnunet
Subject: [GNUnet-SVN] r18676 - gnunet/src/datastore
Date: Sun, 18 Dec 2011 17:54:52 +0100

Author: grothoff
Date: 2011-12-18 17:54:52 +0100 (Sun, 18 Dec 2011)
New Revision: 18676

Modified:
   gnunet/src/datastore/gnunet-service-datastore.c
Log:
-use plugin-specific bloomfilter file name

Modified: gnunet/src/datastore/gnunet-service-datastore.c
===================================================================
--- gnunet/src/datastore/gnunet-service-datastore.c     2011-12-18 16:40:45 UTC 
(rev 18675)
+++ gnunet/src/datastore/gnunet-service-datastore.c     2011-12-18 16:54:52 UTC 
(rev 18676)
@@ -152,6 +152,11 @@
 static int do_drop;
 
 /**
+ * Name of our plugin.
+ */
+static char *plugin_name;
+
+/**
  * How much space are we using for the cache?  (space available for
  * insertions that will be instantly reclaimed by discarding less
  * important content --- or possibly whatever we just inserted into
@@ -1288,34 +1293,21 @@
 {
   struct DatastorePlugin *ret;
   char *libname;
-  char *name;
 
-  if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_string (cfg, "DATASTORE", "DATABASE",
-                                             &name))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("No `%s' specified for `%s' in configuration!\n"), 
"DATABASE",
-                "DATASTORE");
-    return NULL;
-  }
-  GNUNET_asprintf (&quota_stat_name,
-                  _("# bytes used in file-sharing datastore `%s'"),
-                  name);
   ret = GNUNET_malloc (sizeof (struct DatastorePlugin));
   ret->env.cfg = cfg;
   ret->env.duc = &disk_utilization_change_cb;
   ret->env.cls = NULL;
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Loading `%s' datastore plugin\n"),
-              name);
-  GNUNET_asprintf (&libname, "libgnunet_plugin_datastore_%s", name);
-  ret->short_name = name;
+              plugin_name);
+  GNUNET_asprintf (&libname, "libgnunet_plugin_datastore_%s", plugin_name);
+  ret->short_name = GNUNET_strdup (plugin_name);
   ret->lib_name = libname;
   ret->api = GNUNET_PLUGIN_load (libname, &ret->env);
   if (ret->api == NULL)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("Failed to load datastore plugin for `%s'\n"), name);
+                _("Failed to load datastore plugin for `%s'\n"), plugin_name);
     GNUNET_free (ret->short_name);
     GNUNET_free (libname);
     GNUNET_free (ret);
@@ -1375,6 +1367,8 @@
     GNUNET_STATISTICS_destroy (stats, GNUNET_YES);
     stats = NULL;
   }
+  GNUNET_free_non_null (plugin_name);
+  plugin_name = NULL;
 }
 
 
@@ -1501,12 +1495,25 @@
      sizeof (struct GNUNET_MessageHeader)},
     {NULL, NULL, 0, 0}
   };
-  char *fn;
+  char *fn;  
+  char *pfn;
   unsigned int bf_size;
   int refresh_bf;
 
   cfg = c;
   if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_get_value_string (cfg, "DATASTORE", "DATABASE",
+                                             &plugin_name))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                _("No `%s' specified for `%s' in configuration!\n"), 
"DATABASE",
+                "DATASTORE");
+    return;
+  }
+  GNUNET_asprintf (&quota_stat_name,
+                  _("# bytes used in file-sharing datastore `%s'"),
+                  plugin_name);
+  if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_size (cfg, "DATASTORE", "QUOTA", &quota))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -1537,36 +1544,37 @@
   }
   if (fn != NULL)
   {
-    if (GNUNET_YES == GNUNET_DISK_file_test (fn))
+    GNUNET_asprintf (&pfn, "%s.%s\n", fn, plugin_name);
+    if (GNUNET_YES == GNUNET_DISK_file_test (pfn))
     {
-      filter = GNUNET_CONTAINER_bloomfilter_load (fn, bf_size, 5);        /* 
approx. 3% false positives at max use */
+      filter = GNUNET_CONTAINER_bloomfilter_load (pfn, bf_size, 5);        /* 
approx. 3% false positives at max use */
       if (NULL == filter)
       {
        /* file exists but not valid, remove and try again, but refresh */
-       if (0 != UNLINK (fn))
+       if (0 != UNLINK (pfn))
        {
          /* failed to remove, run without file */
          GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                      _("Failed to remove bogus bloomfilter file `%s'\n"),
-                     fn);
-         GNUNET_free (fn);
-         fn = NULL;
+                     pfn);
+         GNUNET_free (pfn);
+         pfn = NULL;
          filter = GNUNET_CONTAINER_bloomfilter_load (NULL, bf_size, 5);        
/* approx. 3% false positives at max use */
          refresh_bf = GNUNET_YES;
        }
        else
        {
          /* try again after remove */
-         filter = GNUNET_CONTAINER_bloomfilter_load (fn, bf_size, 5);        
/* approx. 3% false positives at max use */
+         filter = GNUNET_CONTAINER_bloomfilter_load (pfn, bf_size, 5);        
/* approx. 3% false positives at max use */
          refresh_bf = GNUNET_YES;
          if (NULL == filter)
          {
            /* failed yet again, give up on using file */
            GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                        _("Failed to remove bogus bloomfilter file `%s'\n"),
-                       fn);
-           GNUNET_free (fn);
-           fn = NULL;
+                       pfn);
+           GNUNET_free (pfn);
+           pfn = NULL;
            filter = GNUNET_CONTAINER_bloomfilter_load (NULL, bf_size, 5);      
  /* approx. 3% false positives at max use */
          }
        }
@@ -1579,9 +1587,10 @@
     }
     else
     {
-      filter = GNUNET_CONTAINER_bloomfilter_load (fn, bf_size, 5);        /* 
approx. 3% false positives at max use */
+      filter = GNUNET_CONTAINER_bloomfilter_load (pfn, bf_size, 5);        /* 
approx. 3% false positives at max use */
       refresh_bf = GNUNET_YES;
     }
+    GNUNET_free (pfn);
   }
   else
   {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]