gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r17207 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r17207 - gnunet/src/mesh
Date: Wed, 5 Oct 2011 15:10:00 +0200

Author: bartpolot
Date: 2011-10-05 15:10:00 +0200 (Wed, 05 Oct 2011)
New Revision: 17207

Modified:
   gnunet/src/mesh/gnunet-service-mesh.c
Log:
Removed DHT_get restarting, set DEMULTIPLEX_EVERYWHERE on all DHT operations

Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c       2011-10-05 12:41:10 UTC (rev 
17206)
+++ gnunet/src/mesh/gnunet-service-mesh.c       2011-10-05 13:10:00 UTC (rev 
17207)
@@ -142,11 +142,6 @@
   struct GNUNET_DHT_GetHandle *dhtget;
 
     /**
-     * Task to reissue the DHT get request a path for this peer
-     */
-  GNUNET_SCHEDULER_TaskIdentifier dhtget_task;
-
-    /**
      * Handles to stop queued transmissions for this peer
      */
   struct GNUNET_CORE_TransmitHandle *core_transmit[CORE_QUEUE_SIZE];
@@ -299,11 +294,6 @@
      */
   struct GNUNET_DHT_GetHandle *dht_get_type;
 
-    /**
-     * Task to reissue the DHT get request for a type
-     */
-  GNUNET_SCHEDULER_TaskIdentifier dht_get_type_task;
-
   /**
    * Task to keep the used paths alive
    */
@@ -518,9 +508,13 @@
 announce_application (void *cls, const GNUNET_HashCode * key, void *value)
 {
   /* FIXME are hashes in multihash map equal on all aquitectures? */
-
-  GNUNET_DHT_put (dht_handle, key, 10U, GNUNET_DHT_RO_RECORD_ROUTE,
-                  GNUNET_BLOCK_TYPE_TEST, sizeof (struct GNUNET_PeerIdentity),
+  GNUNET_DHT_put (dht_handle,
+                  key,
+                  10U,
+                  GNUNET_DHT_RO_RECORD_ROUTE |
+                    GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
+                  GNUNET_BLOCK_TYPE_TEST,
+                  sizeof (struct GNUNET_PeerIdentity),
                   (const char *) &my_full_id,
 #if MESH_DEBUG
                   GNUNET_TIME_UNIT_FOREVER_ABS, GNUNET_TIME_UNIT_FOREVER_REL,
@@ -582,7 +576,8 @@
   GNUNET_DHT_put (dht_handle,   /* DHT handle */
                   &my_full_id.hashPubKey,       /* Key to use */
                   10U,          /* Replication level */
-                  GNUNET_DHT_RO_RECORD_ROUTE,   /* DHT options */
+                  GNUNET_DHT_RO_RECORD_ROUTE |
+                    GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,   /* DHT options */
                   GNUNET_BLOCK_TYPE_TEST,       /* Block type */
                   sizeof(my_full_id),   /* Size of the data */
                   (char *)&my_full_id,  /* Data itself */
@@ -620,17 +615,7 @@
                     unsigned int put_path_length,
                     enum GNUNET_BLOCK_Type type, size_t size, const void 
*data);
 
-/**
- * Task to restart the DHT get search for a peer.
- *
- * @param cls unused
- * @param tc unused
- */
-static void
-dht_get_restart (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
 
-
-
 
/******************************************************************************/
 /******************      GENERAL HELPER FUNCTIONS      
************************/
 
/******************************************************************************/
@@ -791,19 +776,18 @@
       path_info->path = p;
       path_info->peer = peer_d;
       path_info->t = peer->tunnels[i];
-      peer_d->dhtget = GNUNET_DHT_get_start(dht_handle,       /* handle */
-                                            GNUNET_TIME_UNIT_SECONDS,     /* 
timeout */
-                                            GNUNET_BLOCK_TYPE_TEST,   /* type 
*/
-                                            &id.hashPubKey,   /*key to search 
*/
-                                            4,        /* replication level */
-                                            GNUNET_DHT_RO_RECORD_ROUTE,
-                                            NULL,     /* xquery */
-                                            0,        /* xquery bits */
-                                            &dht_get_id_handler,
-                                            (void *) path_info);
-      peer_d->dhtget_task = GNUNET_SCHEDULER_add_delayed(GET_RESTART_TIME,
-                                                         &dht_get_restart,
-                                                         path_info);
+      peer_d->dhtget =
+          GNUNET_DHT_get_start(dht_handle,       /* handle */
+                               GNUNET_TIME_UNIT_FOREVER_REL, /* timeout */
+                               GNUNET_BLOCK_TYPE_TEST,   /* type */
+                               &id.hashPubKey,   /*key to search */
+                               4,        /* replication level */
+                               GNUNET_DHT_RO_RECORD_ROUTE |
+                                 GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
+                               NULL,     /* xquery */
+                               0,        /* xquery bits */
+                               &dht_get_id_handler,
+                               (void *) path_info);
     }
   }
 }
@@ -1226,7 +1210,6 @@
 
   if (NULL != t->dht_get_type)
   {
-    GNUNET_SCHEDULER_cancel (t->dht_get_type_task);
     GNUNET_DHT_get_stop (t->dht_get_type);
   }
   r = tunnel_destroy (t);
@@ -2193,7 +2176,6 @@
   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
              "MESH: Got results from DHT for %s\n",
              GNUNET_h2s_full(&pi.hashPubKey));
-  GNUNET_SCHEDULER_cancel(path_info->peer->dhtget_task);
   GNUNET_DHT_get_stop(path_info->peer->dhtget);
   path_info->peer->dhtget = NULL;
   if (NULL == get_path || NULL == put_path)
@@ -2201,8 +2183,19 @@
     if (NULL == path_info->peer->path_head)
     {
       // Find ourselves some alternate initial path to the destination: retry
-      path_info->peer->dhtget_task = GNUNET_SCHEDULER_add_now 
(&dht_get_restart,
-                                                               path_info);
+      GNUNET_PEER_resolve(path_info->peer->id, &pi);
+      path_info->peer->dhtget =
+          GNUNET_DHT_get_start(dht_handle,       /* handle */
+                               GNUNET_TIME_UNIT_FOREVER_REL,     /* timeout */
+                               GNUNET_BLOCK_TYPE_TEST,   /* type */
+                               &pi.hashPubKey,   /*key to search */
+                               4,        /* replication level */
+                               GNUNET_DHT_RO_RECORD_ROUTE |
+                                 GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
+                               NULL,     /* xquery */
+                               0,        /* xquery bits */
+                               &dht_get_id_handler,
+                               (void *) path_info);
       return;
     }
   }
@@ -2250,44 +2243,6 @@
 
 
 /**
- * Task to restart the DHT get search for a peer.
- *
- * @param cls unused
- * @param tc unused
- */
-static void
-dht_get_restart (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  struct MeshPathInfo *path = cls;
-  struct MeshPeerInfo *peer = path->peer;
-  struct GNUNET_PeerIdentity id;
-
-  if (GNUNET_SCHEDULER_REASON_SHUTDOWN == tc->reason)
-    return;
-  GNUNET_PEER_resolve(peer->id, &id);
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "MESH: restarting DHT get for id %s [%u]\n",
-              GNUNET_i2s (&id),
-              peer->id);
-  if (NULL != peer->dhtget)
-    GNUNET_DHT_get_stop(peer->dhtget);
-  peer->dhtget = GNUNET_DHT_get_start (dht_handle,
-                                       GNUNET_TIME_UNIT_FOREVER_REL,
-                                       GNUNET_BLOCK_TYPE_TEST,
-                                       &id.hashPubKey,
-                                       10U,
-                                       GNUNET_DHT_RO_RECORD_ROUTE,
-                                       NULL,
-                                       0,
-                                       &dht_get_id_handler,
-                                       path);
-  peer->dhtget_task = GNUNET_SCHEDULER_add_delayed (GET_RESTART_TIME,
-                                                    &dht_get_restart,
-                                                    path);
-}
-
-
-/**
  * Function to process paths received for a new peer addition. The recorded
  * paths form the initial tunnel, which can be optimized later.
  * Called on each result obtained for the DHT search.
@@ -2336,26 +2291,19 @@
     path_info->peer = peer_info;
     path_info->t = t;
     /* we don't have a route to the peer, let's try a direct lookup */
-    peer_info->dhtget = GNUNET_DHT_get_start (dht_handle,
-                                              /* handle */
-                                              GNUNET_TIME_UNIT_SECONDS,
-                                              /* timeout */
-                                              GNUNET_BLOCK_TYPE_TEST,
-                                              /* block type */
-                                              &pi->hashPubKey,
-                                              /* key to look up */
-                                              10U,
-                                              /* replication level */
-                                              GNUNET_DHT_RO_RECORD_ROUTE,
-                                              /* option to dht: record route */
-                                              NULL,     /* xquery */
-                                              0,        /* xquery bits */
-                                              dht_get_id_handler,
-                                              /* callback */
-                                              path_info);       /* closure */
-    peer_info->dhtget_task = GNUNET_SCHEDULER_add_delayed (GET_RESTART_TIME,
-                                                           &dht_get_restart,
-                                                           path_info);
+    peer_info->dhtget =
+        GNUNET_DHT_get_start (dht_handle, /* handle */
+                              GNUNET_TIME_UNIT_FOREVER_REL, /* timeout */
+                              GNUNET_BLOCK_TYPE_TEST, /* block type */
+                              &pi->hashPubKey, /* key to look up */
+                              10U, /* replication level */
+                              GNUNET_DHT_RO_RECORD_ROUTE |
+                                GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
+                              /* option to dht: record route */
+                              NULL,     /* xquery */
+                              0,        /* xquery bits */
+                              dht_get_id_handler,  /* callback */
+                              path_info);       /* closure */
     return;
   }
 
@@ -2407,34 +2355,6 @@
 }
 
 
-/**
- * Task to restart the DHT get search for a peer offering a type.
- *
- * @param cls unused
- * @param tc unused
- */
-static void
-dht_get_type_restart (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  struct MeshTunnel *t = cls;
-  GNUNET_HashCode hash;
-
-  if (GNUNET_SCHEDULER_REASON_SHUTDOWN == tc->reason)
-    return;
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "MESH: restarting DHT get for type %u\n",
-              t->type);
-  GNUNET_DHT_get_stop(t->dht_get_type);
-  GNUNET_CRYPTO_hash (&t->type, sizeof (GNUNET_MESH_ApplicationType), &hash);
-  t->dht_get_type = GNUNET_DHT_get_start (dht_handle, 
GNUNET_TIME_UNIT_FOREVER_REL,
-                            GNUNET_BLOCK_TYPE_TEST, &hash, 10U,
-                            GNUNET_DHT_RO_RECORD_ROUTE, NULL, 0,
-                            &dht_get_type_handler, t);
-  t->dht_get_type_task = GNUNET_SCHEDULER_add_delayed(GET_RESTART_TIME,
-                                                      &dht_get_type_restart,
-                                                      t);
-}
-
 
/******************************************************************************/
 /*********************       MESH LOCAL HANDLES      
**************************/
 
/******************************************************************************/
@@ -2809,19 +2729,18 @@
     path_info = GNUNET_malloc(sizeof(struct MeshPathInfo));
     path_info->peer = peer_info;
     path_info->t = t;
-    peer_info->dhtget = GNUNET_DHT_get_start(dht_handle,       /* handle */
-                                            GNUNET_TIME_UNIT_SECONDS,     /* 
timeout */
-                                            GNUNET_BLOCK_TYPE_TEST,   /* type 
*/
-                                            &peer_msg->peer.hashPubKey,   
/*key to search */
-                                            4,        /* replication level */
-                                            GNUNET_DHT_RO_RECORD_ROUTE,
-                                            NULL,     /* xquery */
-                                            0,        /* xquery bits */
-                                            &dht_get_id_handler,
-                                            (void *) path_info);
-    peer_info->dhtget_task = GNUNET_SCHEDULER_add_delayed (GET_RESTART_TIME,
-                                                           &dht_get_restart,
-                                                           path_info);
+    peer_info->dhtget =
+        GNUNET_DHT_get_start(dht_handle,       /* handle */
+                             GNUNET_TIME_UNIT_FOREVER_REL,     /* timeout */
+                             GNUNET_BLOCK_TYPE_TEST,   /* type */
+                             &peer_msg->peer.hashPubKey,   /*key to search */
+                             4,        /* replication level */
+                             GNUNET_DHT_RO_RECORD_ROUTE |
+                               GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
+                             NULL,     /* xquery */
+                             0,        /* xquery bits */
+                             &dht_get_id_handler,
+                             (void *) path_info);
   }
   else if (NULL != peer_info->path_head)
   {
@@ -2998,21 +2917,22 @@
     return;
   }
   /* Ok, lets find a peer offering the service */
-  if (t->dht_get_type)
+  if (NULL != t->dht_get_type)
   {
-    GNUNET_SCHEDULER_cancel (t->dht_get_type_task);
     GNUNET_DHT_get_stop (t->dht_get_type);
   }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "MESH:  looking in DHT for %s\n",
               GNUNET_h2s_full (&hash));
   t->dht_get_type =
-      GNUNET_DHT_get_start (dht_handle, GNUNET_TIME_UNIT_FOREVER_REL,
-                            GNUNET_BLOCK_TYPE_TEST, &hash, 10U,
-                            GNUNET_DHT_RO_RECORD_ROUTE, NULL, 0,
+      GNUNET_DHT_get_start (dht_handle,
+                            GNUNET_TIME_UNIT_FOREVER_REL,
+                            GNUNET_BLOCK_TYPE_TEST,
+                            &hash,
+                            10U,
+                            GNUNET_DHT_RO_RECORD_ROUTE |
+                              GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE,
+                            NULL, 0,
                             &dht_get_type_handler, t);
-  t->dht_get_type_task = GNUNET_SCHEDULER_add_delayed(GET_RESTART_TIME,
-                                                      &dht_get_type_restart,
-                                                      t);
 
   GNUNET_SERVER_receive_done (client, GNUNET_OK);
   return;




reply via email to

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