Add a third default.
[oweals/gnunet.git] / src / util / client.c
index 0e6cf0a4f26e00f4f90d953ff206e23dacda6491..3e7bbf9f89058f4edc144bd492ccfadeb385ec53 100644 (file)
@@ -330,7 +330,7 @@ test_service_configuration (const char *service_name,
  */
 static struct GNUNET_CONNECTION_Handle *
 do_connect (const char *service_name,
-            const struct GNUNET_CONFIGURATION_Handle *cfg, 
+            const struct GNUNET_CONFIGURATION_Handle *cfg,
            unsigned int attempt)
 {
   struct GNUNET_CONNECTION_Handle *connection;
@@ -570,11 +570,11 @@ receive_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
       (const struct GNUNET_MessageHeader *) client->received_buf;
   void *handler_cls = client->receiver_handler_cls;
   uint16_t msize = ntohs (cmsg->size);
-  char mbuf[msize];
+  char mbuf[msize] GNUNET_ALIGN;
   struct GNUNET_MessageHeader *msg = (struct GNUNET_MessageHeader *) mbuf;
 
-  LOG (GNUNET_ERROR_TYPE_DEBUG, "Received message of type %u and size %u\n",
-       ntohs (cmsg->type), msize);
+  LOG (GNUNET_ERROR_TYPE_DEBUG, "Received message of type %u and size %u from %s service.\n",
+       ntohs (cmsg->type), msize, client->service_name);
   client->receive_task = GNUNET_SCHEDULER_NO_TASK;
   GNUNET_assert (GNUNET_YES == client->msg_complete);
   GNUNET_assert (client->received_pos >= msize);
@@ -600,7 +600,7 @@ receive_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
  */
 void
 GNUNET_CLIENT_receive (struct GNUNET_CLIENT_Connection *client,
-                       GNUNET_CLIENT_MessageHandler handler, 
+                       GNUNET_CLIENT_MessageHandler handler,
                       void *handler_cls,
                        struct GNUNET_TIME_Relative timeout)
 {
@@ -816,7 +816,7 @@ struct GNUNET_CLIENT_TestHandle *
 GNUNET_CLIENT_service_test (const char *service,
                             const struct GNUNET_CONFIGURATION_Handle *cfg,
                             struct GNUNET_TIME_Relative timeout,
-                            GNUNET_CLIENT_TestResultCallback cb, 
+                            GNUNET_CLIENT_TestResultCallback cb,
                            void *cb_cls)
 {
   struct GNUNET_CLIENT_TestHandle *th;
@@ -840,7 +840,7 @@ GNUNET_CLIENT_service_test (const char *service,
     unixpath = NULL;
     if ((GNUNET_OK ==
         GNUNET_CONFIGURATION_get_value_filename (cfg,
-                                                 service, 
+                                                 service,
                                                  "UNIXPATH",
                                                  &unixpath)) &&
        (0 < strlen (unixpath)))  /* We have a non-NULL unixpath, does that mean it's valid? */
@@ -1030,7 +1030,7 @@ client_notify (void *cls, size_t size, void *buf);
  * @param tc unused
  */
 static void
-client_delayed_retry (void *cls, 
+client_delayed_retry (void *cls,
                      const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct GNUNET_CLIENT_TransmitHandle *th = cls;
@@ -1064,6 +1064,7 @@ client_delayed_retry (void *cls,
          "Transmission failed %u times, trying again in %s.\n",
          MAX_ATTEMPTS - th->attempts_left,
          GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES));
+    GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == th->reconnect_task);
     th->reconnect_task =
         GNUNET_SCHEDULER_add_delayed (delay, &client_delayed_retry, th);
     return;
@@ -1141,6 +1142,7 @@ client_notify (void *cls, size_t size, void *buf)
          MAX_ATTEMPTS - th->attempts_left,
          GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES));
     client->th = th;
+    GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == th->reconnect_task);
     th->reconnect_task =
         GNUNET_SCHEDULER_add_delayed (delay, &client_delayed_retry, th);
     return 0;
@@ -1148,6 +1150,14 @@ client_notify (void *cls, size_t size, void *buf)
   GNUNET_assert (size >= th->size);
   ret = th->notify (th->notify_cls, size, buf);
   GNUNET_free (th);
+  if (sizeof (struct GNUNET_MessageHeader) <= ret)
+  {
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "Transmitting message of type %u and size %u to %s service.\n",
+         ntohs (((struct GNUNET_MessageHeader *) buf)->type),
+         ntohs (((struct GNUNET_MessageHeader *) buf)->size),
+         client->service_name);
+  }
   return ret;
 }
 
@@ -1176,7 +1186,7 @@ GNUNET_CLIENT_notify_transmit_ready (struct GNUNET_CLIENT_Connection *client,
                                      size_t size,
                                      struct GNUNET_TIME_Relative timeout,
                                      int auto_retry,
-                                     GNUNET_CONNECTION_TransmitReadyNotify notify, 
+                                     GNUNET_CONNECTION_TransmitReadyNotify notify,
                                     void *notify_cls)
 {
   struct GNUNET_CLIENT_TransmitHandle *th;
@@ -1188,7 +1198,7 @@ GNUNET_CLIENT_notify_transmit_ready (struct GNUNET_CLIENT_Connection *client,
     GNUNET_break (0);
     return NULL;
   }
-  th = GNUNET_malloc (sizeof (struct GNUNET_CLIENT_TransmitHandle));
+  th = GNUNET_new (struct GNUNET_CLIENT_TransmitHandle);
   th->client = client;
   th->size = size;
   th->timeout = GNUNET_TIME_relative_to_absolute (timeout);
@@ -1201,8 +1211,10 @@ GNUNET_CLIENT_notify_transmit_ready (struct GNUNET_CLIENT_Connection *client,
   client->th = th;
   if (NULL == client->connection)
   {
+    GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == th->reconnect_task);
     th->reconnect_task =
-        GNUNET_SCHEDULER_add_delayed (client->back_off, &client_delayed_retry,
+        GNUNET_SCHEDULER_add_delayed (client->back_off,
+                                      &client_delayed_retry,
                                       th);
 
   }