allow MST callback to distinguish between disconnect and parse error situations,...
authorChristian Grothoff <christian@grothoff.org>
Sun, 29 Oct 2017 11:32:57 +0000 (12:32 +0100)
committerChristian Grothoff <christian@grothoff.org>
Sun, 29 Oct 2017 11:32:57 +0000 (12:32 +0100)
16 files changed:
src/cadet/gnunet-service-cadet_tunnels.c
src/conversation/gnunet-helper-audio-playback-gst.c
src/conversation/gnunet-helper-audio-playback.c
src/conversation/gnunet_gst.c
src/conversation/microphone.c
src/core/gnunet-service-core.c
src/core/gnunet-service-core_kx.c
src/fs/fs_dirmetascan.c
src/include/gnunet_mst_lib.h
src/statistics/gnunet-service-statistics.c
src/testbed/gnunet-helper-testbed.c
src/transport/gnunet-helper-transport-wlan-dummy.c
src/transport/plugin_transport_http_server.c
src/util/client.c
src/util/mst.c
src/vpn/gnunet-service-vpn.c

index 22e19ef70a5452360bbd00561fd78df9e69156c9..fb91a4a6aeccf4b98553e2668bdd1a2cc79d1b87 100644 (file)
@@ -2856,7 +2856,9 @@ handle_plaintext_channel_destroy (void *cls,
  *
  * @param cls the `struct CadetTunnel` that got the message
  * @param msg the message
- * @return #GNUNET_OK (continue to process)
+ * @return #GNUNET_OK on success (always)
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 handle_decrypted (void *cls,
index 264b14e763235c140932356b8392f4a889195f50..002fed6c743460e0d52a02d159ade12bc9eaf107 100644 (file)
@@ -221,6 +221,11 @@ feed_buffer_to_gst (const char *audio, size_t b_len)
 
 /**
  * Message callback
+ *
+ * @param msg message we received.
+ * @return #GNUNET_OK on success,
+ *     #GNUNET_NO to stop further processing due to disconnect (no error)
+ *     #GNUNET_SYSERR to stop further processing due to error
  */
 static int
 stdin_receiver (void *cls,
index 4344e1d418808f512a0bf5ce1fc87c773121084b..18f63ad186820c08dfba9160b5b047732349b917 100644 (file)
@@ -546,6 +546,11 @@ ogg_demux_and_decode ()
 
 /**
  * Message callback
+ *
+ * @param msg message we received.
+ * @return #GNUNET_OK on success,
+ *     #GNUNET_NO to stop further processing due to disconnect (no error)
+ *     #GNUNET_SYSERR to stop further processing due to error
  */
 static int
 stdin_receiver (void *cls,
index 52cb2ccbc5dd6c7e474cf1c152f3a20edf47c0b9..828b350770b993b5637ff2f8b7b265ada6875b22 100644 (file)
@@ -649,6 +649,11 @@ gnunet_read (GNUNET_gstData * d)
 
 /**
  * Message callback
+ *
+ * @param msg message we received.
+ * @return #GNUNET_OK on success,
+ *     #GNUNET_NO to stop further processing due to disconnect (no error)
+ *     #GNUNET_SYSERR to stop further processing due to error
  */
 static int
 stdin_receiver (void *cls,
index 7871433a33888cfe27f2247ca34f1bb9f0ab94fb..11468fc59f1173b6f0fbd5f58971e17febc029db 100644 (file)
@@ -65,7 +65,9 @@ struct Microphone
  *
  * @param cls clsoure with our `struct Microphone`
  * @param msg the message from the helper
- * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 process_record_messages (void *cls,
index 625bf9655a2a66525a575510144bdcebc5b714ca..214f72904379b226f02acbe46de39246781db4e3 100644 (file)
@@ -426,6 +426,9 @@ struct TokenizerContext
  *
  * @param cls reservation request (`struct TokenizerContext`)
  * @param message the actual message
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 tokenized_cb (void *cls,
index 8a7cada5c5a1a1b76191e7859bb54ee703c6d760..ae0ae508f6b4b4fc0e1c128ef0757cd4628967ce 100644 (file)
@@ -708,6 +708,9 @@ setup_fresh_ping (struct GSC_KeyExchangeInfo *kx)
  *
  * @param cls the `struct GSC_KeyExchangeInfo`
  * @param m the message
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 deliver_message (void *cls,
index 7b9f178fdcf511a17f0fb9a373aeb0a9b2e53fd6..8a3e37b4911897bd13e0df7c0dc2b798e6217bed 100644 (file)
@@ -246,6 +246,9 @@ finish_scan (void *cls)
  *
  * @param cls the closure (directory scanner object)
  * @param msg message from the helper process
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 process_helper_msgs (void *cls,
index 7a1ca7a55a7684654eb5f3bcb99ddf47294661fc..fe6524eb32badcc73a6e2e153af7d193624b539c 100644 (file)
@@ -61,7 +61,9 @@ struct GNUNET_MessageStreamTokenizer;
  *
  * @param cls closure
  * @param message the actual message
- * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing
+ * @return #GNUNET_OK on success,
+ *     #GNUNET_NO to stop further processing due to disconnect (no error)
+ *     #GNUNET_SYSERR to stop further processing due to error
  */
 typedef int
 (*GNUNET_MessageTokenizerCallback) (void *cls,
index 0cb136b99790a48f2183c8034707d54c509721d3..87e966a01d598f077de98b02920de5cae08c085f 100644 (file)
@@ -998,7 +998,9 @@ client_disconnect_cb (void *cls,
  *
  * @param cls NULL
  * @param message the message found on disk
- * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 inject_message (void *cls,
index 392f257dd9b263fafceb4cba013a7435ebba86f7..9601e7567739da13c423a3c2d7eb8e561da91500 100644 (file)
@@ -292,8 +292,9 @@ child_death_task (void *cls)
  *
  * @param cls identification of the client
  * @param message the actual message
- *
- * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 tokenizer_cb (void *cls,
@@ -359,7 +360,7 @@ tokenizer_cb (void *cls,
   cfg = GNUNET_CONFIGURATION_create ();
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_deserialize (cfg,
-                                       config, 
+                                       config,
                                        ul_config_size,
                                        NULL))
   {
index 63ed9c4b796ad3abf68f9f8268c60831e22b23c9..f02d8bdd72e5b7e6a405db84ec869a0308d9b1bf 100644 (file)
@@ -121,6 +121,9 @@ send_mac_to_plugin (char *buffer, struct GNUNET_TRANSPORT_WLAN_MacAddress *mac)
  *
  * @param cls the 'struct SendBuffer' to copy the converted message to
  * @param hdr inbound message from the FIFO
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 stdin_send (void *cls,
@@ -167,6 +170,9 @@ stdin_send (void *cls,
  *
  * @param cls the 'struct SendBuffer' to copy to
  * @param hdr the message we received to copy to the buffer
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 file_in_send (void *cls,
index d9fade44f4275ac2ba559ac89de270646f1da0e8..6a9c1b0baba318e9002aede5072a3ebdc1264ee8 100644 (file)
@@ -1651,7 +1651,7 @@ server_send_callback (void *cls,
  *
  * @param cls current session as closure
  * @param message the message to be forwarded to transport service
- * @return #GNUNET_OK
+ * @return #GNUNET_OK (all OK)
  */
 static int
 server_receive_mst_cb (void *cls,
index 90bc837d73e62cf11f9d19518013fc2fbdc3fbc1..138b1cfddb0351d51cace8b5519058d506dad67e 100644 (file)
@@ -306,7 +306,9 @@ transmit_ready (void *cls)
  *
  * @param cls the `struct ClientState`
  * @param msg message we received.
- * @return #GNUNET_OK on success, #GNUNET_SYSERR to stop further processing
+ * @return #GNUNET_OK on success,
+ *     #GNUNET_NO to stop further processing due to disconnect (no error)
+ *     #GNUNET_SYSERR to stop further processing due to error
  */
 static int
 recv_message (void *cls,
@@ -315,7 +317,7 @@ recv_message (void *cls,
   struct ClientState *cstate = cls;
 
   if (GNUNET_YES == cstate->in_destroy)
-    return GNUNET_SYSERR;
+    return GNUNET_NO;
   LOG (GNUNET_ERROR_TYPE_DEBUG,
        "Received message of type %u and size %u from %s\n",
        ntohs (msg->type),
@@ -324,7 +326,7 @@ recv_message (void *cls,
   GNUNET_MQ_inject_message (cstate->mq,
                             msg);
   if (GNUNET_YES == cstate->in_destroy)
-    return GNUNET_SYSERR;
+    return GNUNET_NO;
   return GNUNET_OK;
 }
 
index 4c2a74212c714f073c475f31d41bd549837fcbe0..5e472965f9892123985bfec71555fe21b1aa36ba 100644 (file)
@@ -126,6 +126,7 @@ GNUNET_MST_from_buffer (struct GNUNET_MessageStreamTokenizer *mst,
   int need_align;
   unsigned long offset;
   int ret;
+  int cbret;
 
   GNUNET_assert (mst->off <= mst->pos);
   GNUNET_assert (mst->pos <= mst->curr_buf);
@@ -229,13 +230,15 @@ do_align:
     if (one_shot == GNUNET_YES)
       one_shot = GNUNET_SYSERR;
     mst->off += want;
-    if (GNUNET_SYSERR == mst->cb (mst->cb_cls,
-                                  hdr))
+    if (GNUNET_OK !=
+        (cbret = mst->cb (mst->cb_cls,
+                           hdr)))
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "Failure processing message of type %u and size %u\n",
-                  ntohs (hdr->type),
-                  ntohs (hdr->size));
+      if (GNUNET_SYSERR == cbret)
+        GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                    "Failure processing message of type %u and size %u\n",
+                    ntohs (hdr->type),
+                    ntohs (hdr->size));
       return GNUNET_SYSERR;
     }
     if (mst->off == mst->pos)
@@ -277,13 +280,15 @@ do_align:
       }
       if (one_shot == GNUNET_YES)
         one_shot = GNUNET_SYSERR;
-      if (GNUNET_SYSERR == mst->cb (mst->cb_cls,
-                                    hdr))
+      if (GNUNET_OK !=
+          (cbret = mst->cb (mst->cb_cls,
+                            hdr)))
       {
-        GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                    "Failure processing message of type %u and size %u\n",
-                    ntohs (hdr->type),
-                    ntohs (hdr->size));
+        if (GNUNET_SYSERR == cbret)
+          GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                      "Failure processing message of type %u and size %u\n",
+                      ntohs (hdr->type),
+                      ntohs (hdr->size));
         return GNUNET_SYSERR;
       }
       buf += want;
index d9daaa7e217571c9bd388d9c79c02ee811ba0b6c..bdc63817699fa45caea5f770bbdf9739528ce43e 100644 (file)
@@ -2218,6 +2218,9 @@ route_packet (struct DestinationEntry *destination,
  *
  * @param cls closure, NULL
  * @param message message we got from the client (VPN channel interface)
+ * @return #GNUNET_OK on success,
+ *    #GNUNET_NO to stop further processing (no error)
+ *    #GNUNET_SYSERR to stop further processing with error
  */
 static int
 message_token (void *cls,