refactoring datastore API to use MQ API, also fixing misc. bugs in new mysql backend
[oweals/gnunet.git] / src / fs / gnunet-service-fs_push.c
index fcd4c832fb0a91cb5b6109e566fd375c7c4ac9ae..71a8e81e4f0293ae5d1433121e4e847a5e2e3e8a 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     Copyright (C) 2011 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2011 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
@@ -296,7 +296,7 @@ transmit_content (struct MigrationReadyPeer *peer,
   }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Asking for transmission of %u bytes to %s for migration\n",
-              msize,
+              (unsigned int) msize,
               GNUNET_i2s (GSF_connected_peer_get_identity2_(peer->peer)));
   peer->th = GSF_peer_transmit_ (peer->peer,
                                  GNUNET_NO, 0 /* priority */ ,
@@ -432,11 +432,9 @@ find_content (struct MigrationReadyPeer *mrp)
  * migration
  *
  * @param cls unused
- * @param tc scheduler context (also unused)
  */
 static void
-gather_migration_blocks (void *cls,
-                         const struct GNUNET_SCHEDULER_TaskContext *tc);
+gather_migration_blocks (void *cls);
 
 
 /**
@@ -569,11 +567,9 @@ process_migration_content (void *cls,
  * migration
  *
  * @param cls unused
- * @param tc scheduler context (also unused)
  */
 static void
-gather_migration_blocks (void *cls,
-                         const struct GNUNET_SCHEDULER_TaskContext *tc)
+gather_migration_blocks (void *cls)
 {
   mig_task = NULL;
   if (mig_size >= MAX_MIGRATION_QUEUE)
@@ -586,7 +582,6 @@ gather_migration_blocks (void *cls,
   value_found = GNUNET_NO;
   mig_qe =
     GNUNET_DATASTORE_get_for_replication (GSF_dsh, 0, UINT_MAX,
-                                          GNUNET_TIME_UNIT_FOREVER_REL,
                                           &process_migration_content, NULL);
   if (NULL == mig_qe)
     consider_gathering ();
@@ -606,6 +601,16 @@ GSF_push_start_ (struct GSF_ConnectedPeer *peer)
 
   if (GNUNET_YES != enabled)
     return;
+  for (mrp = peer_head; NULL != mrp; mrp = mrp->next)
+    if (mrp->peer == peer)
+      break;
+  if (NULL != mrp)
+  {
+    /* same peer added twice, must not happen */
+    GNUNET_break (0);
+    return;
+  }
+
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Adding peer %s to list for pushing\n",
               GNUNET_i2s (GSF_connected_peer_get_identity2_(peer)));