gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r19741 - gnunet/src/fs gnunet/src/include gnunet/src/util g


From: gnunet
Subject: [GNUnet-SVN] r19741 - gnunet/src/fs gnunet/src/include gnunet/src/util gnunet-gtk/src/fs gnunet-java gnunet-java/src
Date: Thu, 9 Feb 2012 11:39:16 +0100

Author: grothoff
Date: 2012-02-09 11:39:16 +0100 (Thu, 09 Feb 2012)
New Revision: 19741

Modified:
   gnunet-gtk/src/fs/gnunet-fs-gtk_publish-dialog.c
   gnunet-java/.classpath
   gnunet-java/src/log4j.properties
   gnunet/src/fs/fs_dirmetascan.c
   gnunet/src/fs/gnunet-publish.c
   gnunet/src/include/gnunet_fs_service.h
   gnunet/src/util/helper.c
Log:
-fixing #2139

Modified: gnunet/src/fs/fs_dirmetascan.c
===================================================================
--- gnunet/src/fs/fs_dirmetascan.c      2012-02-09 10:12:46 UTC (rev 19740)
+++ gnunet/src/fs/fs_dirmetascan.c      2012-02-09 10:39:16 UTC (rev 19741)
@@ -92,7 +92,8 @@
 
 
 /**
- * Abort the scan.
+ * Abort the scan.  Must not be called from within the progress_callback
+ * function.
  *
  * @param ds directory scanner structure
  */

Modified: gnunet/src/fs/gnunet-publish.c
===================================================================
--- gnunet/src/fs/gnunet-publish.c      2012-02-09 10:12:46 UTC (rev 19740)
+++ gnunet/src/fs/gnunet-publish.c      2012-02-09 10:39:16 UTC (rev 19741)
@@ -96,6 +96,29 @@
 
 
 /**
+ * Stop the directory scanner (we had an error).
+ *
+ * @param cls closure
+ * @param tc scheduler context
+ */
+static void
+stop_scanner_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  kill_task = GNUNET_SCHEDULER_NO_TASK;
+  GNUNET_FS_directory_scan_abort (ds);
+  ds = NULL;
+  if (namespace != NULL)
+  {
+    GNUNET_FS_namespace_delete (namespace, GNUNET_NO);
+    namespace = NULL;
+  }
+  GNUNET_FS_stop (ctx);
+  ctx = NULL;
+  ret = 1;
+}
+
+
+/**
  * Called by FS client to give information about the progress of an
  * operation.
  *
@@ -487,17 +510,12 @@
     break;
   case GNUNET_FS_DIRSCANNER_INTERNAL_ERROR:
     FPRINTF (stdout, "%s", _("Internal error scanning directory.\n"));
-    GNUNET_FS_directory_scan_abort (ds);
-    ds = NULL;
-    if (namespace != NULL)
-      GNUNET_FS_namespace_delete (namespace, GNUNET_NO);
-    GNUNET_FS_stop (ctx);
     if (kill_task != GNUNET_SCHEDULER_NO_TASK)
     {
       GNUNET_SCHEDULER_cancel (kill_task);
       kill_task = GNUNET_SCHEDULER_NO_TASK;
     }
-    ret = 1;
+    kill_task = GNUNET_SCHEDULER_add_now (&stop_scanner_task, NULL);
     break;
   default:
     GNUNET_assert (0);

Modified: gnunet/src/include/gnunet_fs_service.h
===================================================================
--- gnunet/src/include/gnunet_fs_service.h      2012-02-09 10:12:46 UTC (rev 
19740)
+++ gnunet/src/include/gnunet_fs_service.h      2012-02-09 10:39:16 UTC (rev 
19741)
@@ -2725,7 +2725,8 @@
 
 
 /**
- * Abort the scan.
+ * Abort the scan.    Must not be called from within the progress_callback
+ * function.
  *
  * @param ds directory scanner structure
  */

Modified: gnunet/src/util/helper.c
===================================================================
--- gnunet/src/util/helper.c    2012-02-09 10:12:46 UTC (rev 19740)
+++ gnunet/src/util/helper.c    2012-02-09 10:39:16 UTC (rev 19741)
@@ -194,7 +194,7 @@
     GNUNET_free (qe);
   }
   /* purge MST buffer */
-  GNUNET_SERVER_mst_receive (h->mst, NULL, NULL, 0, GNUNET_YES, GNUNET_NO);
+  (void) GNUNET_SERVER_mst_receive (h->mst, NULL, NULL, 0, GNUNET_YES, 
GNUNET_NO);
 }
 
 

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_publish-dialog.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_publish-dialog.c    2012-02-09 10:12:46 UTC 
(rev 19740)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_publish-dialog.c    2012-02-09 10:39:16 UTC 
(rev 19741)
@@ -201,6 +201,11 @@
   struct GNUNET_FS_DirScanner *ds;
 
   /**
+   * Task scheduled to stop the scanner on errors.
+   */
+  GNUNET_SCHEDULER_TaskIdentifier kill_task;
+
+  /**
    * Default options to use for sharing when adding files during the scan.
    */
   struct GNUNET_FS_BlockOptions directory_scan_bo;
@@ -905,6 +910,11 @@
 destroy_progress_dialog (struct AddDirClientContext *adcc)
 {
   GNUNET_assert (NULL == adcc->ds);
+  if (GNUNET_SCHEDULER_NO_TASK != adcc->kill_task)
+  {
+    GNUNET_SCHEDULER_cancel (adcc->kill_task);
+    adcc->kill_task = GNUNET_SCHEDULER_NO_TASK;
+  }
   gtk_widget_destroy (adcc->progress_dialog);
   g_object_unref (G_OBJECT (adcc->progress_dialog_builder));  
   GNUNET_CONTAINER_DLL_remove (adcc->ctx->adddir_head,
@@ -1087,6 +1097,26 @@
 
 
 /**
+ * Function called when the scanner had some trouble and we
+ * need to abort the scanning process (which we need to do 
+ * in a separate task).
+ *
+ * @param cls  progress dialog context of our window
+ * @param tc scheduler context, unused
+ */
+static void
+stop_scanner_task (void *cls,
+                  const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  struct AddDirClientContext *adcc = cls;
+ 
+  adcc->kill_task = GNUNET_SCHEDULER_NO_TASK;
+  GNUNET_FS_directory_scan_abort (adcc->ds);
+  adcc->ds = NULL;
+}
+
+
+/**
  * Progress callback called from the directory scanner with
  * information about our progress scanning the hierarchy.
  *
@@ -1174,8 +1204,7 @@
     break;
   case GNUNET_FS_DIRSCANNER_INTERNAL_ERROR:
     insert_progress_dialog_text (adcc, _("Operation failed (press cancel)\n"));
-    GNUNET_FS_directory_scan_abort (adcc->ds);
-    adcc->ds = NULL;
+    adcc->kill_task = GNUNET_SCHEDULER_add_now (&stop_scanner_task, adcc);
     break;
   case GNUNET_FS_DIRSCANNER_FINISHED:
     {

Modified: gnunet-java/.classpath
===================================================================
--- gnunet-java/.classpath      2012-02-09 10:12:46 UTC (rev 19740)
+++ gnunet-java/.classpath      2012-02-09 10:39:16 UTC (rev 19741)
@@ -8,7 +8,6 @@
        <classpathentry kind="con" 
path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
        <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
        <classpathentry kind="lib" path="lib/slf4j-api-1.6.4.jar"/>
-       <classpathentry kind="lib" path="lib/slf4j-jdk14-1.6.4.jar"/>
        <classpathentry kind="con" 
path="org.eclipse.jdt.USER_LIBRARY/commons-io-2.1"/>
        <classpathentry kind="output" path="bin"/>
 </classpath>

Modified: gnunet-java/src/log4j.properties
===================================================================
--- gnunet-java/src/log4j.properties    2012-02-09 10:12:46 UTC (rev 19740)
+++ gnunet-java/src/log4j.properties    2012-02-09 10:39:16 UTC (rev 19741)
@@ -1,4 +1,4 @@
-log4j.rootLogger=DEBUG, A1
+log4j.rootLogger=WARN, A1
 
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
 




reply via email to

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