[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19741 - gnunet/src/fs gnunet/src/include gnunet/src/util gnunet-gtk/src/fs gnunet-java gnunet-java/src,
gnunet <=