gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r24972 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r24972 - gnunet/src/transport
Date: Thu, 15 Nov 2012 10:38:33 +0100

Author: wachs
Date: 2012-11-15 10:38:33 +0100 (Thu, 15 Nov 2012)
New Revision: 24972

Modified:
   gnunet/src/transport/plugin_transport_udp.c
   gnunet/src/transport/plugin_transport_udp.h
Log:
- bug hunting

Modified: gnunet/src/transport/plugin_transport_udp.c
===================================================================
--- gnunet/src/transport/plugin_transport_udp.c 2012-11-14 22:00:09 UTC (rev 
24971)
+++ gnunet/src/transport/plugin_transport_udp.c 2012-11-15 09:38:33 UTC (rev 
24972)
@@ -979,6 +979,16 @@
 static void
 dequeue (struct Plugin *plugin, struct UDP_MessageWrapper * udpw)
 {
+  if (plugin->bytes_in_buffer - udpw->msg_size < 0)
+      GNUNET_break (0);
+  else
+  {
+    GNUNET_STATISTICS_update (plugin->env->stats,
+                              "# UDP, total, bytes in buffers",
+                              udpw->msg_size, GNUNET_NO);
+    plugin->bytes_in_buffer -= udpw->msg_size;
+  }
+
   GNUNET_STATISTICS_update (plugin->env->stats,
                             "# UDP, total, bytes in buffers",
                             -udpw->msg_size, GNUNET_NO);
@@ -1015,7 +1025,6 @@
 
   call_continuation (&dummy, result);
 
-  /* Remove left-over fragments from queue */
   /* Remove leftover fragments from queue */
   if (s->addrlen == sizeof (struct sockaddr_in6))
   {
@@ -1440,14 +1449,19 @@
   return s;
 }
 
-
 static void 
 enqueue (struct Plugin *plugin, struct UDP_MessageWrapper * udpw)
 {
+  if (plugin->bytes_in_buffer + udpw->msg_size > INT64_MAX)
+      GNUNET_break (0);
+  else
+  {
+    GNUNET_STATISTICS_update (plugin->env->stats,
+                              "# UDP, total, bytes in buffers",
+                              udpw->msg_size, GNUNET_NO);
+    plugin->bytes_in_buffer += udpw->msg_size;
+  }
   GNUNET_STATISTICS_update (plugin->env->stats,
-                            "# UDP, total, bytes in buffers",
-                            udpw->msg_size, GNUNET_NO);
-  GNUNET_STATISTICS_update (plugin->env->stats,
                             "# UDP, total, msgs in buffers",
                             1, GNUNET_NO);
   if (udpw->session->addrlen == sizeof (struct sockaddr_in))

Modified: gnunet/src/transport/plugin_transport_udp.h
===================================================================
--- gnunet/src/transport/plugin_transport_udp.h 2012-11-14 22:00:09 UTC (rev 
24971)
+++ gnunet/src/transport/plugin_transport_udp.h 2012-11-15 09:38:33 UTC (rev 
24972)
@@ -159,7 +159,13 @@
    */
   char *bind6_address;
 
+
   /**
+   * Bytes currently in buffer
+   */
+  int64_t bytes_in_buffer;
+
+  /**
    * Handle to NAT traversal support.
    */
   struct GNUNET_NAT_Handle *nat;




reply via email to

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