gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r33241 - gnunet/src/peerstore


From: gnunet
Subject: [GNUnet-SVN] r33241 - gnunet/src/peerstore
Date: Mon, 12 May 2014 12:10:41 +0200

Author: otarabai
Date: 2014-05-12 12:10:41 +0200 (Mon, 12 May 2014)
New Revision: 33241

Modified:
   gnunet/src/peerstore/gnunet-peerstore.c
   gnunet/src/peerstore/gnunet-service-peerstore.c
   gnunet/src/peerstore/peerstore.h
   gnunet/src/peerstore/peerstore_api.c
Log:
PEERSTORE api fix


Modified: gnunet/src/peerstore/gnunet-peerstore.c
===================================================================
--- gnunet/src/peerstore/gnunet-peerstore.c     2014-05-12 08:53:16 UTC (rev 
33240)
+++ gnunet/src/peerstore/gnunet-peerstore.c     2014-05-12 10:10:41 UTC (rev 
33241)
@@ -58,7 +58,9 @@
 
 void test_cont(void *cls, const char *emsg)
 {
-  printf("Received a response\n");
+  char *req = cls;
+
+  printf("Received a response to request: %s\n", req);
   if(NULL != emsg)
   {
     printf("Response: %s\n", emsg);
@@ -97,7 +99,15 @@
         5,
         GNUNET_TIME_UNIT_FOREVER_REL,
         &test_cont,
-        NULL);
+        "Req1");
+    GNUNET_PEERSTORE_store(peerstore_handle,
+            &pid,
+            "subsub",
+            "value",
+            5,
+            GNUNET_TIME_UNIT_FOREVER_REL,
+            &test_cont,
+            "Req2");
   }
 
   ret = 0;

Modified: gnunet/src/peerstore/gnunet-service-peerstore.c
===================================================================
--- gnunet/src/peerstore/gnunet-service-peerstore.c     2014-05-12 08:53:16 UTC 
(rev 33240)
+++ gnunet/src/peerstore/gnunet-service-peerstore.c     2014-05-12 10:10:41 UTC 
(rev 33241)
@@ -102,13 +102,17 @@
   //TODO: do the actual storage
   //create a fake response for testing
   char *response = "This is a response";
+  uint16_t resp_size = strlen(response);
   tc = GNUNET_SERVER_transmit_context_create (client);
-  sresm = malloc(sizeof(struct StoreResponseMessage) + strlen(response));
+  msg_size = sizeof(struct StoreResponseMessage) + resp_size;
+  sresm = malloc(msg_size);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Sending a response to client of size: 
%u, response size: %u\n", msg_size, resp_size);
   sresm->header.type = htons(GNUNET_MESSAGE_TYPE_PEERSTORE_STORE_RESULT);
-  sresm->header.size = htons(sizeof(struct StoreResponseMessage) + 
strlen(response));
+  sresm->header.size = htons(msg_size);
   sresm->success = htons(GNUNET_NO);
-  sresm->emsg_size = htons(strlen(response));
-  memcpy(&sresm[1], response, strlen(response));
+  sresm->emsg_size = htons(resp_size);
+  char *msg_ptr = (char *)&sresm[1];
+  memcpy(msg_ptr, response, resp_size);
   GNUNET_SERVER_transmit_context_append_message(tc, (struct 
GNUNET_MessageHeader *)sresm);
   GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL);
 }

Modified: gnunet/src/peerstore/peerstore.h
===================================================================
--- gnunet/src/peerstore/peerstore.h    2014-05-12 08:53:16 UTC (rev 33240)
+++ gnunet/src/peerstore/peerstore.h    2014-05-12 10:10:41 UTC (rev 33241)
@@ -76,12 +76,12 @@
   /**
    * Was the store operation successful (#GNUNET_YES / #GNUNET_NO)
    */
-  uint16_t success;
+  uint16_t success GNUNET_PACKED;
 
   /**
    * Size of the error message (0 if no error)
    */
-  size_t emsg_size;
+  size_t emsg_size GNUNET_PACKED;
 };
 
 GNUNET_NETWORK_STRUCT_END

Modified: gnunet/src/peerstore/peerstore_api.c
===================================================================
--- gnunet/src/peerstore/peerstore_api.c        2014-05-12 08:53:16 UTC (rev 
33240)
+++ gnunet/src/peerstore/peerstore_api.c        2014-05-12 10:10:41 UTC (rev 
33241)
@@ -204,6 +204,7 @@
 {
   struct GNUNET_PEERSTORE_Handle *h = cls;
 
+  LOG(GNUNET_ERROR_TYPE_DEBUG, "Reconnect task executed\n");
   h->r_task = GNUNET_SCHEDULER_NO_TASK;
   reconnect (h);
 }
@@ -225,6 +226,7 @@
   h = GNUNET_new (struct GNUNET_PEERSTORE_Handle);
   h->client = client;
   h->cfg = cfg;
+  LOG(GNUNET_ERROR_TYPE_DEBUG, "New connection created\n");
   return h;
 }
 
@@ -242,6 +244,7 @@
     h->client = NULL;
   }
   GNUNET_free (h);
+  LOG(GNUNET_ERROR_TYPE_DEBUG, "Disconnected, BYE!\n");
 }
 
 /**
@@ -252,6 +255,7 @@
 static void
 reconnect (struct GNUNET_PEERSTORE_Handle *h)
 {
+  LOG(GNUNET_ERROR_TYPE_DEBUG, "Reconnecting...\n");
   if (GNUNET_SCHEDULER_NO_TASK != h->r_task)
   {
     GNUNET_SCHEDULER_cancel (h->r_task);
@@ -403,6 +407,7 @@
     trigger_transmit (h);
     if (NULL != h->sc_head)
     {
+      LOG(GNUNET_ERROR_TYPE_DEBUG, "Another store request awaiting response, 
triggering receive for it\n");
       h->in_receive = GNUNET_YES;
       GNUNET_CLIENT_receive (h->client,
           &peerstore_handler,
@@ -411,15 +416,14 @@
     }
     if(NULL != cont)
     {
-      srm = (struct StoreResponseMessage *)&msg[1];
+      LOG(GNUNET_ERROR_TYPE_DEBUG, "Calling continuation of store request\n");
+      srm = (struct StoreResponseMessage *)msg;
       emsg = NULL;
       if(GNUNET_NO == ntohs(srm->success))
       {
-        LOG(GNUNET_ERROR_TYPE_DEBUG, "Calling user callback with message: 
%s\n", emsg);
         emsg = GNUNET_malloc(ntohs(srm->emsg_size));
         memcpy(emsg, &srm[1], ntohs(srm->emsg_size));
       }
-      LOG(GNUNET_ERROR_TYPE_DEBUG, "Calling user callback without a 
message\n");
       cont(cont_cls, emsg);
     }
     break;




reply via email to

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