gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r30728 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r30728 - gnunet/src/mesh
Date: Fri, 15 Nov 2013 16:11:37 +0100

Author: bartpolot
Date: 2013-11-15 16:11:37 +0100 (Fri, 15 Nov 2013)
New Revision: 30728

Modified:
   gnunet/src/mesh/gnunet-service-mesh_connection.c
   gnunet/src/mesh/gnunet-service-mesh_connection.h
Log:
- dont use a cancel handle if cont is NULL, fix potential memleak


Modified: gnunet/src/mesh/gnunet-service-mesh_connection.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh_connection.c    2013-11-15 14:15:18 UTC 
(rev 30727)
+++ gnunet/src/mesh/gnunet-service-mesh_connection.c    2013-11-15 15:11:37 UTC 
(rev 30728)
@@ -216,8 +216,19 @@
  */
 struct MeshConnectionQueue
 {
+  /**
+   * Peer queue handle, to cancel if necessary.
+   */
   struct MeshPeerQueue *q;
+
+  /**
+   * Continuation to call once sent.
+   */
   GMC_sent cont;
+
+  /**
+   * Closure for @c cont.
+   */
   void *cont_cls;
 };
 
@@ -2389,7 +2400,8 @@
  * @param cont Continuation called once message is sent. Can be NULL.
  * @param cont_cls Closure for @c cont.
  *
- * @return Handle to cancel the message before it's sent. NULL on error.
+ * @return Handle to cancel the message before it's sent.
+ *         NULL on error or if @c cont is NULL.
  *         Invalid on @c cont call.
  */
 struct MeshConnectionQueue *
@@ -2505,6 +2517,13 @@
   LOG (GNUNET_ERROR_TYPE_DEBUG, "  C_P+ %p %u\n", c, c->pending_messages);
   c->pending_messages++;
 
+  if (NULL == cont)
+  {
+    (void) GMP_queue_add (get_hop (c, fwd), data, type, size, c, fwd,
+                          &message_sent, q);
+    return NULL;
+  }
+
   q = GNUNET_new (struct MeshConnectionQueue);
   q->q = GMP_queue_add (get_hop (c, fwd), data, type, size, c, fwd,
                         &message_sent, q);

Modified: gnunet/src/mesh/gnunet-service-mesh_connection.h
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh_connection.h    2013-11-15 14:15:18 UTC 
(rev 30727)
+++ gnunet/src/mesh/gnunet-service-mesh_connection.h    2013-11-15 15:11:37 UTC 
(rev 30728)
@@ -454,7 +454,8 @@
  * @param cont Continuation called once message is sent. Can be NULL.
  * @param cont_cls Closure for @c cont.
  *
- * @return Handle to cancel the message before it's sent. NULL on error.
+ * @return Handle to cancel the message before it's sent.
+ *         NULL on error or if @c cont is NULL.
  *         Invalid on @c cont call.
  */
 struct MeshConnectionQueue *




reply via email to

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