gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r36333 - in gnunet/src: include multicast psyc psycstore ut


From: gnunet
Subject: [GNUnet-SVN] r36333 - in gnunet/src: include multicast psyc psycstore util
Date: Sun, 6 Sep 2015 01:44:08 +0200

Author: tg
Date: 2015-09-06 01:44:08 +0200 (Sun, 06 Sep 2015)
New Revision: 36333

Modified:
   gnunet/src/include/gnunet_psyc_service.h
   gnunet/src/multicast/gnunet-service-multicast.c
   gnunet/src/multicast/multicast_api.c
   gnunet/src/psyc/gnunet-service-psyc.c
   gnunet/src/psyc/test_psyc.c
   gnunet/src/psycstore/gnunet-service-psycstore.c
   gnunet/src/psycstore/plugin_psycstore_sqlite.c
   gnunet/src/psycstore/psyc_util_lib.c
   gnunet/src/util/client_manager.c
Log:
multicast, psyc, psycstore, client_manager fixes

Modified: gnunet/src/include/gnunet_psyc_service.h
===================================================================
--- gnunet/src/include/gnunet_psyc_service.h    2015-09-05 23:44:03 UTC (rev 
36332)
+++ gnunet/src/include/gnunet_psyc_service.h    2015-09-05 23:44:08 UTC (rev 
36333)
@@ -537,11 +537,18 @@
 /**
  * Method called from PSYC upon receiving part of a message.
  *
- * @param cls  Closure.
- * @param message_id  Sequence number of the message.
- * @param data_offset  Byte offset of data, only set if @a msg has a type
- *                     #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA
- * @param flags  OR'ed GNUNET_PSYC_MessageFlags
+ * @param cls
+ *        Closure.
+ * @param slave_key
+ *        Public key of the slave sending the message.
+ *        Only set for channel master.
+ * @param message_id
+ *        Sequence number of the message.
+ * @param flags
+ *        OR'ed GNUNET_PSYC_MessageFlags
+ * @param data_offset
+ *        Byte offset of data, only set if @a msg has a type
+ *        #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA
  * @param msg  Message part, one of the following types:
  * - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_HEADER
  * - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD
@@ -552,9 +559,10 @@
  */
 typedef void
 (*GNUNET_PSYC_MessagePartCallback) (void *cls,
+                                    const struct GNUNET_CRYPTO_EcdsaPublicKey 
*slave_key,
                                     uint64_t message_id,
+                                    uint32_t flags,
                                     uint64_t data_offset,
-                                    uint32_t flags,
                                     const struct GNUNET_MessageHeader *msg);
 
 
@@ -561,10 +569,14 @@
 /**
  * Method called from PSYC upon receiving a join request.
  *
- * @param cls  Closure.
- * @param slave_key  Public key of the slave requesting join.
- * @param join_msg  Join message sent along with the request.
- * @param jh  Join handle to use with GNUNET_PSYC_join_decision()
+ * @param cls
+ *        Closure.
+ * @param slave_key
+ *        Public key of the slave requesting join.
+ * @param join_msg
+ *        Join message sent along with the request.
+ * @param jh
+ *        Join handle to use with GNUNET_PSYC_join_decision()
  */
 typedef void
 (*GNUNET_PSYC_JoinRequestCallback) (void *cls,

Modified: gnunet/src/multicast/gnunet-service-multicast.c
===================================================================
--- gnunet/src/multicast/gnunet-service-multicast.c     2015-09-05 23:44:03 UTC 
(rev 36332)
+++ gnunet/src/multicast/gnunet-service-multicast.c     2015-09-05 23:44:08 UTC 
(rev 36333)
@@ -788,9 +788,11 @@
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "%p Client connected to group %s..\n",
               mem, GNUNET_h2s (&grp->pub_key_hash));
+  char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&mem->pub_key);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "%p ..as member %s.\n",
-              mem, GNUNET_h2s (&mem_pub_key_hash));
+              "%p ..as member %s (%s).\n",
+              mem, GNUNET_h2s (&mem->pub_key_hash), str);
+  GNUNET_free (str);
 
   GNUNET_SERVER_client_set_user_context (client, grp);
 
@@ -833,6 +835,7 @@
     if (0 < join_msg_size)
       memcpy (&req[1], join_msg, join_msg_size);
 
+    req->member_key = mem->pub_key;
     req->purpose.size = htonl (msg_size
                                - sizeof (req->header)
                                - sizeof (req->reserved)
@@ -1000,6 +1003,7 @@
   /* FIXME: yucky, should use separate message structs for P2P and CS! */
   out = (struct GNUNET_MULTICAST_RequestHeader *) GNUNET_copy_message (m);
 
+  out->member_key = mem->pub_key;
   out->fragment_id = GNUNET_ntohll (++mem->max_fragment_id);
   out->purpose.size = htonl (ntohs (out->header.size)
                              - sizeof (out->header)

Modified: gnunet/src/multicast/multicast_api.c
===================================================================
--- gnunet/src/multicast/multicast_api.c        2015-09-05 23:44:03 UTC (rev 
36332)
+++ gnunet/src/multicast/multicast_api.c        2015-09-05 23:44:08 UTC (rev 
36333)
@@ -267,7 +267,7 @@
               "Calling message callback with a message of size %u.\n",
               ntohs (mmsg->header.size));
 
-  if (NULL != grp->message_cb)
+  if (GNUNET_YES != grp->is_disconnecting && NULL != grp->message_cb)
     grp->message_cb (grp->cb_cls, mmsg);
 }
 
@@ -848,7 +848,7 @@
   grp->disconnect_cls = part_cls;
 
   GNUNET_CLIENT_MANAGER_disconnect (mem->grp.client, GNUNET_YES,
-                                    &member_cleanup, mem);
+                                    member_cleanup, mem);
 }
 
 

Modified: gnunet/src/psyc/gnunet-service-psyc.c
===================================================================
--- gnunet/src/psyc/gnunet-service-psyc.c       2015-09-05 23:44:03 UTC (rev 
36332)
+++ gnunet/src/psyc/gnunet-service-psyc.c       2015-09-05 23:44:08 UTC (rev 
36333)
@@ -534,8 +534,12 @@
 static void
 cleanup_channel (struct Channel *chn)
 {
+  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+              "%p Cleaning up channel %s. master? %u\n",
+              chn, GNUNET_h2s (&chn->pub_key_hash), chn->is_master);
   message_queue_drop (chn);
-  GNUNET_CONTAINER_multihashmap_remove_all (recv_cache, &chn->pub_key_hash);
+  GNUNET_CONTAINER_multihashmap_destroy (chn->recv_frags);
+  chn->recv_frags = NULL;
 
   if (NULL != chn->store_op)
   {
@@ -565,6 +569,7 @@
 
   struct Channel *
     chn = GNUNET_SERVER_client_get_user_context (client, struct Channel);
+  chn->is_disconnected = GNUNET_YES;
 
   if (NULL == chn)
   {
@@ -1046,6 +1051,7 @@
   pmsg->message_id = req->request_id;
   pmsg->fragment_offset = req->fragment_offset;
   pmsg->flags = htonl (GNUNET_PSYC_MESSAGE_REQUEST);
+  pmsg->slave_key = req->member_key;
 
   memcpy (&pmsg[1], &req[1], size - sizeof (*req));
   client_send_msg (chn, &pmsg->header);
@@ -1229,7 +1235,7 @@
   struct GNUNET_CONTAINER_MultiHashMap
     *chan_msgs = GNUNET_CONTAINER_multihashmap_get (recv_cache,
                                                     &chn->pub_key_hash);
-  GNUNET_assert (NULL != chan_msgs); // FIXME
+  GNUNET_assert (NULL != chan_msgs);
   uint64_t frag_id;
 
   while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (fragq->fragments, NULL,
@@ -1382,7 +1388,7 @@
       /* Check if there's a missing message before the current one */
       if (GNUNET_PSYC_STATE_NOT_MODIFIED == fragq->state_delta)
       {
-        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state NOT modified\n");
+        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state NOT modified\n", chn);
 
         if (!(fragq->flags & GNUNET_PSYC_MESSAGE_ORDER_ANY)
             && (chn->max_message_id != msg_id - 1
@@ -1399,7 +1405,7 @@
       }
       else
       {
-        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state modified\n");
+        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state modified\n", chn);
         if (GNUNET_YES != fragq->state_is_modified)
         {
           if (msg_id - fragq->state_delta != chn->max_state_message_id)
@@ -1594,12 +1600,12 @@
     mst->max_group_generation = max_group_generation;
     mst->origin
       = GNUNET_MULTICAST_origin_start (cfg, &mst->priv_key, max_fragment_id,
-                                       &mcast_recv_join_request,
-                                       &mcast_recv_membership_test,
-                                       &mcast_recv_replay_fragment,
-                                       &mcast_recv_replay_message,
-                                       &mcast_recv_request,
-                                       &mcast_recv_message, chn);
+                                       mcast_recv_join_request,
+                                       mcast_recv_membership_test,
+                                       mcast_recv_replay_fragment,
+                                       mcast_recv_replay_message,
+                                       mcast_recv_request,
+                                       mcast_recv_message, chn);
     chn->is_ready = GNUNET_YES;
   }
   else
@@ -1641,12 +1647,12 @@
                                       &slv->origin,
                                       slv->relay_count, slv->relays,
                                       &slv->join_msg->header,
-                                      &mcast_recv_join_request,
-                                      &mcast_recv_join_decision,
-                                      &mcast_recv_membership_test,
-                                      &mcast_recv_replay_fragment,
-                                      &mcast_recv_replay_message,
-                                      &mcast_recv_message, chn);
+                                      mcast_recv_join_request,
+                                      mcast_recv_join_decision,
+                                      mcast_recv_membership_test,
+                                      mcast_recv_replay_fragment,
+                                      mcast_recv_replay_message,
+                                      mcast_recv_message, chn);
     if (NULL != slv->join_msg)
     {
       GNUNET_free (slv->join_msg);
@@ -2004,7 +2010,7 @@
   else if (GNUNET_YES == chn->is_disconnected)
   {
     /* FIXME: handle partial message (when still in_transmit) */
-    cleanup_channel (chn);
+    return GNUNET_SYSERR;
   }
   return ret;
 }
@@ -2113,13 +2119,17 @@
     }
     else if (pmeth->flags & GNUNET_PSYC_MASTER_TRANSMIT_STATE_MODIFY)
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%p master_queue_message: setting 
state_modify flag\n", mst);
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  "%p master_queue_message: state_delta=%" PRIu64 "\n",
+                  mst, tmit_msg->id - mst->max_state_message_id);
       pmeth->state_delta = GNUNET_htonll (tmit_msg->id
                                           - mst->max_state_message_id);
+      mst->max_state_message_id = tmit_msg->id;
     }
     else
     {
-        GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%p master_queue_message: 
setting state_not_modified flag\n", mst);
+        GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                    "%p master_queue_message: state not modified\n", mst);
       pmeth->state_delta = GNUNET_htonll (GNUNET_PSYC_STATE_NOT_MODIFIED);
     }
 
@@ -2234,7 +2244,9 @@
   uint16_t size = ntohs (msg->size);
   if (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD < size - sizeof (*msg))
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%p Message payload too large.\n", 
chn);
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "%p Message payload too large: %u < %u.\n",
+                chn, GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD, size - sizeof 
(*msg));
     GNUNET_break (0);
     transmit_cancel (chn, client);
     GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
@@ -2613,7 +2625,7 @@
   masters = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
   slaves = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
   channel_slaves = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
-  recv_cache = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
+  recv_cache = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
   nc = GNUNET_SERVER_notification_context_create (server, 1);
   GNUNET_SERVER_add_handlers (server, server_handlers);
   GNUNET_SERVER_disconnect_notify (server, &client_disconnect, NULL);

Modified: gnunet/src/psyc/test_psyc.c
===================================================================
--- gnunet/src/psyc/test_psyc.c 2015-09-05 23:44:03 UTC (rev 36332)
+++ gnunet/src/psyc/test_psyc.c 2015-09-05 23:44:08 UTC (rev 36333)
@@ -213,8 +213,9 @@
 
 
 void
-master_message_part_cb (void *cls, uint64_t message_id,
-                        uint64_t data_offset, uint32_t flags,
+master_message_part_cb (void *cls,
+                        const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
+                        uint64_t message_id, uint32_t flags, uint64_t 
data_offset,
                         const struct GNUNET_MessageHeader *msg)
 {
   if (NULL == msg)
@@ -284,8 +285,9 @@
 
 
 void
-slave_message_part_cb (void *cls, uint64_t message_id,
-                       uint64_t data_offset, uint32_t flags,
+slave_message_part_cb (void *cls,
+                       const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
+                       uint64_t message_id, uint32_t flags, uint64_t 
data_offset,
                        const struct GNUNET_MessageHeader *msg)
 {
   if (NULL == msg)
@@ -453,9 +455,9 @@
   test = TEST_SLAVE_HISTORY_REPLAY;
   GNUNET_PSYC_channel_history_replay (slv_chn, 1, 1, "",
                                       GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
-                                      &slave_message_cb,
-                                      &slave_message_part_cb,
-                                      &slave_history_replay_result, NULL);
+                                      slave_message_cb,
+                                      slave_message_part_cb,
+                                      slave_history_replay_result, NULL);
 }
 
 
@@ -481,9 +483,9 @@
   test = TEST_MASTER_HISTORY_REPLAY;
   GNUNET_PSYC_channel_history_replay (mst_chn, 1, 1, "",
                                       GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
-                                      &master_message_cb,
-                                      &master_message_part_cb,
-                                      &master_history_replay_result, NULL);
+                                      master_message_cb,
+                                      master_message_part_cb,
+                                      master_history_replay_result, NULL);
 }
 
 

Modified: gnunet/src/psycstore/gnunet-service-psycstore.c
===================================================================
--- gnunet/src/psycstore/gnunet-service-psycstore.c     2015-09-05 23:44:03 UTC 
(rev 36332)
+++ gnunet/src/psycstore/gnunet-service-psycstore.c     2015-09-05 23:44:08 UTC 
(rev 36333)
@@ -508,8 +508,10 @@
 
 
 static void
-recv_state_message_part (void *cls, uint64_t message_id, uint64_t data_offset,
-                         uint32_t flags, const struct GNUNET_MessageHeader 
*msg)
+recv_state_message_part (void *cls,
+                         const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
+                         uint64_t message_id, uint32_t flags, uint64_t 
data_offset,
+                         const struct GNUNET_MessageHeader *msg)
 {
   struct StateModifyClosure *scls = cls;
   uint16_t psize;
@@ -618,7 +620,7 @@
 
   if (NULL == scls->recv)
   {
-    scls->recv = GNUNET_PSYC_receive_create (NULL, &recv_state_message_part,
+    scls->recv = GNUNET_PSYC_receive_create (NULL, recv_state_message_part,
                                              scls);
   }
 
@@ -660,7 +662,7 @@
   {
     ret = db->message_get (db->cls, &req->channel_key,
                            message_id, message_id,
-                           &ret_frags, &recv_state_fragment, &scls);
+                           &ret_frags, recv_state_fragment, &scls);
     if (GNUNET_OK != ret)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_ERROR,

Modified: gnunet/src/psycstore/plugin_psycstore_sqlite.c
===================================================================
--- gnunet/src/psycstore/plugin_psycstore_sqlite.c      2015-09-05 23:44:03 UTC 
(rev 36332)
+++ gnunet/src/psycstore/plugin_psycstore_sqlite.c      2015-09-05 23:44:08 UTC 
(rev 36333)
@@ -598,7 +598,7 @@
                "SELECT name, value_current\n"
                "FROM state\n"
                "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = 
?)\n"
-               "      AND (name = ? OR name LIKE ?);",
+               "      AND (name = ? OR substr(name, 1, ?) = ? || '_');",
                &plugin->select_state_prefix);
 
   sql_prepare (plugin->dbh,
@@ -1763,16 +1763,12 @@
   int ret = GNUNET_SYSERR;
   sqlite3_stmt *stmt = plugin->select_state_prefix;
   size_t name_len = strlen (name);
-  char *name_prefix;
 
-  GNUNET_asprintf (&name_prefix,
-                   "%s_%%",
-                   name);
   if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
                                       sizeof (*channel_key), SQLITE_STATIC)
       || SQLITE_OK != sqlite3_bind_text (stmt, 2, name, name_len, 
SQLITE_STATIC)
-      || SQLITE_OK != sqlite3_bind_text (stmt, 3, name_prefix, name_len + 2,
-                                         SQLITE_STATIC))
+      || SQLITE_OK != sqlite3_bind_int (stmt, 3, name_len + 1)
+      || SQLITE_OK != sqlite3_bind_text (stmt, 4, name, name_len, 
SQLITE_STATIC))
   {
     LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
                 "sqlite3_bind");
@@ -1808,7 +1804,6 @@
     LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
                 "sqlite3_reset");
   }
-  GNUNET_free (name_prefix);
   return ret;
 }
 

Modified: gnunet/src/psycstore/psyc_util_lib.c
===================================================================
--- gnunet/src/psycstore/psyc_util_lib.c        2015-09-05 23:44:03 UTC (rev 
36332)
+++ gnunet/src/psycstore/psyc_util_lib.c        2015-09-05 23:44:08 UTC (rev 
36333)
@@ -401,12 +401,17 @@
 static void
 transmit_data (struct GNUNET_PSYC_TransmitHandle *tmit)
 {
-  uint16_t data_size = GNUNET_PSYC_DATA_MAX_PAYLOAD;
+  int notify_ret = GNUNET_YES;
+  uint16_t data_size = 0;
   char data[GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD] = "";
   struct GNUNET_MessageHeader *msg = (struct GNUNET_MessageHeader *) data;
   msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA);
 
-  int notify_ret = tmit->notify_data (tmit->notify_data_cls, &data_size, 
&msg[1]);
+  if (NULL != tmit->notify_data)
+  {
+    data_size = GNUNET_PSYC_DATA_MAX_PAYLOAD;
+    notify_ret = tmit->notify_data (tmit->notify_data_cls, &data_size, 
&msg[1]);
+  }
   LOG (GNUNET_ERROR_TYPE_DEBUG,
        "transmit_data (ret: %d, size: %u): %.*s\n",
        notify_ret, data_size, data_size, &msg[1]);
@@ -461,10 +466,11 @@
 static void
 transmit_mod (struct GNUNET_PSYC_TransmitHandle *tmit)
 {
-  uint16_t max_data_size, data_size;
+  uint16_t max_data_size = 0;
+  uint16_t data_size = 0;
   char data[GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD] = "";
   struct GNUNET_MessageHeader *msg = (struct GNUNET_MessageHeader *) data;
-  int notify_ret;
+  int notify_ret = GNUNET_YES;
 
   switch (tmit->state)
   {
@@ -472,12 +478,17 @@
   {
     struct GNUNET_PSYC_MessageModifier *mod
       = (struct GNUNET_PSYC_MessageModifier *) msg;
-    max_data_size = data_size = GNUNET_PSYC_MODIFIER_MAX_PAYLOAD;
     msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER);
     msg->size = sizeof (struct GNUNET_PSYC_MessageModifier);
-    notify_ret = tmit->notify_mod (tmit->notify_mod_cls, &data_size, &mod[1],
-                                   &mod->oper, &mod->value_size);
 
+    if (NULL != tmit->notify_mod)
+    {
+      max_data_size = GNUNET_PSYC_MODIFIER_MAX_PAYLOAD;
+      data_size = max_data_size;
+      notify_ret = tmit->notify_mod (tmit->notify_mod_cls, &data_size, &mod[1],
+                                     &mod->oper, &mod->value_size);
+    }
+
     mod->name_size = strnlen ((char *) &mod[1], data_size) + 1;
     LOG (GNUNET_ERROR_TYPE_DEBUG,
          "transmit_mod (ret: %d, size: %u + %u): %.*s\n",
@@ -498,11 +509,16 @@
   }
   case GNUNET_PSYC_MESSAGE_STATE_MOD_CONT:
   {
-    max_data_size = data_size = GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD;
     msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT);
     msg->size = sizeof (struct GNUNET_MessageHeader);
-    notify_ret = tmit->notify_mod (tmit->notify_mod_cls,
-                                   &data_size, &msg[1], NULL, NULL);
+
+    if (NULL != tmit->notify_mod)
+    {
+      max_data_size = GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD;
+      data_size = max_data_size;
+      notify_ret = tmit->notify_mod (tmit->notify_mod_cls,
+                                     &data_size, &msg[1], NULL, NULL);
+    }
     tmit->mod_value_remaining -= data_size;
     LOG (GNUNET_ERROR_TYPE_DEBUG,
          "transmit_mod (ret: %d, size: %u): %.*s\n",
@@ -847,7 +863,8 @@
 recv_error (struct GNUNET_PSYC_ReceiveHandle *recv)
 {
   if (NULL != recv->message_part_cb)
-    recv->message_part_cb (recv->cb_cls, recv->message_id, 0, recv->flags, 
NULL);
+    recv->message_part_cb (recv->cb_cls, NULL, recv->message_id, recv->flags,
+                           0, NULL);
 
   if (NULL != recv->message_cb)
     recv->message_cb (recv->cb_cls, recv->message_id, recv->flags, NULL);
@@ -1066,8 +1083,10 @@
     }
 
     if (NULL != recv->message_part_cb)
-      recv->message_part_cb (recv->cb_cls, recv->message_id, 0, // FIXME: 
data_offset
-                             recv->flags, pmsg);
+      recv->message_part_cb (recv->cb_cls, &recv->slave_key,
+                             recv->message_id, recv->flags,
+                             0, // FIXME: data_offset
+                             pmsg);
 
     switch (ptype)
     {
@@ -1144,8 +1163,10 @@
 
 
 static void
-parse_message_part_cb (void *cls, uint64_t message_id, uint64_t data_offset,
-                       uint32_t flags, const struct GNUNET_MessageHeader *msg)
+parse_message_part_cb (void *cls,
+                       const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
+                       uint64_t message_id, uint32_t flags, uint64_t 
data_offset,
+                       const struct GNUNET_MessageHeader *msg)
 {
   struct ParseMessageClosure *pmc = cls;
   if (NULL == msg)
@@ -1230,7 +1251,7 @@
   memcpy (&pmsg[1], &msg[1], msg_size - sizeof (*msg));
 
   struct GNUNET_PSYC_ReceiveHandle *
-    recv = GNUNET_PSYC_receive_create (NULL, &parse_message_part_cb, &cls);
+    recv = GNUNET_PSYC_receive_create (NULL, parse_message_part_cb, &cls);
   GNUNET_PSYC_receive_message (recv, pmsg);
   GNUNET_PSYC_receive_destroy (recv);
   GNUNET_free (pmsg);

Modified: gnunet/src/util/client_manager.c
===================================================================
--- gnunet/src/util/client_manager.c    2015-09-05 23:44:03 UTC (rev 36332)
+++ gnunet/src/util/client_manager.c    2015-09-05 23:44:08 UTC (rev 36333)
@@ -191,6 +191,10 @@
     size = ntohs (msg->size);
     /* FIXME: decrease reconnect_delay gradually after a successful 
reconnection */
   }
+  else /* disconnected */
+  {
+    mgr->client_tmit = NULL;
+  }
 
   size_t i = 0;
   while (NULL != mgr->handlers[i].callback)




reply via email to

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