implement no-buffer option at route level
authorChristian Grothoff <christian@grothoff.org>
Tue, 31 Jan 2017 16:45:25 +0000 (17:45 +0100)
committerChristian Grothoff <christian@grothoff.org>
Tue, 31 Jan 2017 16:45:25 +0000 (17:45 +0100)
src/cadet/gnunet-service-cadet-new_core.c

index 70d0cb83ec529c46b0ca593d7e7df143a5cd2426..ee05a2442c5846ab1c2e60b39731eb460006ff2d 100644 (file)
@@ -27,7 +27,6 @@
  * All functions in this file should use the prefix GCO (Gnunet Cadet cOre (bottom))
  *
  * TODO:
- * - do NOT use buffering if the route options say no buffer!
  * - Optimization: given BROKEN messages, destroy paths (?)
  */
 #include "platform.h"
@@ -394,6 +393,12 @@ route_message (struct CadetPeer *prev,
               GNUNET_MQ_msg_copy (msg));
     return;
   }
+  /* Check if buffering is disallowed, and if so, make sure we only queue
+     one message per direction. */
+  if ( (0 != (route->options & GNUNET_CADET_OPTION_NOBUFFER)) &&
+       (NULL != dir->env_head) )
+    discard_buffer (dir,
+                    dir->env_head);
   rung = dir->rung;
   if (cur_buffers == max_buffers)
   {