gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r17240 - in gnunet/src: include util


From: gnunet
Subject: [GNUnet-SVN] r17240 - in gnunet/src: include util
Date: Thu, 6 Oct 2011 10:58:04 +0200

Author: grothoff
Date: 2011-10-06 10:58:04 +0200 (Thu, 06 Oct 2011)
New Revision: 17240

Modified:
   gnunet/src/include/gnunet_server_lib.h
   gnunet/src/util/server_tc.c
Log:
vminko: new API to delete a TransmitContext (slightly modified patch from #1822)

Modified: gnunet/src/include/gnunet_server_lib.h
===================================================================
--- gnunet/src/include/gnunet_server_lib.h      2011-10-06 08:48:47 UTC (rev 
17239)
+++ gnunet/src/include/gnunet_server_lib.h      2011-10-06 08:58:04 UTC (rev 
17240)
@@ -463,10 +463,9 @@
 
 
 /**
- * Execute a transmission context.  If there is
- * an error in the transmission, the receive_done
- * method will be called with an error code (GNUNET_SYSERR),
- * otherwise with GNUNET_OK.
+ * Execute a transmission context.  If there is an error in the
+ * transmission, the receive_done method will be called with an error
+ * code (GNUNET_SYSERR), otherwise with GNUNET_OK.
  *
  * @param tc transmission context to use
  * @param timeout when to time out and abort the transmission
@@ -476,7 +475,24 @@
                                     struct GNUNET_TIME_Relative timeout);
 
 
+/**
+ * Destroy a transmission context.  This function must not be called
+ * after 'GNUNET_SERVER_transmit_context_run'.
+ *
+ * @param tc transmission context to destroy
+ * @param success code to give to 'GNUNET_SERVER_receive_done' for
+ *        the client:  GNUNET_OK to keep the connection open and
+ *                          continue to receive
+ *                GNUNET_NO to close the connection (normal behavior)
+ *                GNUNET_SYSERR to close the connection (signal
+ *                          serious error)
+ */
+void
+GNUNET_SERVER_transmit_context_destroy (struct GNUNET_SERVER_TransmitContext
+                                        *tc,
+                                       int success);
 
+
 /**
  * The notification context is the key datastructure for a conveniance
  * API used for transmission of notifications to the client until the

Modified: gnunet/src/util/server_tc.c
===================================================================
--- gnunet/src/util/server_tc.c 2011-10-06 08:48:47 UTC (rev 17239)
+++ gnunet/src/util/server_tc.c 2011-10-06 08:58:04 UTC (rev 17240)
@@ -82,10 +82,7 @@
 
   if (buf == NULL)
   {
-    GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR);
-    GNUNET_SERVER_client_drop (tc->client);
-    GNUNET_free_non_null (tc->buf);
-    GNUNET_free (tc);
+    GNUNET_SERVER_transmit_context_destroy (tc, GNUNET_SYSERR);
     return 0;
   }
   if (tc->total - tc->off > size)
@@ -96,6 +93,7 @@
   tc->off += msize;
   if (tc->total == tc->off)
   {
+
     GNUNET_SERVER_receive_done (tc->client, GNUNET_OK);
     GNUNET_SERVER_client_drop (tc->client);
     GNUNET_free_non_null (tc->buf);
@@ -112,10 +110,7 @@
                                              tc))
     {
       GNUNET_break (0);
-      GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR);
-      GNUNET_SERVER_client_drop (tc->client);
-      GNUNET_free_non_null (tc->buf);
-      GNUNET_free (tc);
+      GNUNET_SERVER_transmit_context_destroy (tc, GNUNET_SYSERR);
     }
   }
   return msize;
@@ -219,11 +214,33 @@
                                            &transmit_response, tc))
   {
     GNUNET_break (0);
-    GNUNET_SERVER_receive_done (tc->client, GNUNET_SYSERR);
-    GNUNET_SERVER_client_drop (tc->client);
-    GNUNET_free_non_null (tc->buf);
-    GNUNET_free (tc);
+    GNUNET_SERVER_transmit_context_destroy (tc, GNUNET_SYSERR);
   }
 }
 
+
+/**
+ * Destroy a transmission context. This function must not be called
+ * after 'GNUNET_SERVER_transmit_context_run'.
+ *
+ * @param tc transmission context to destroy
+ * @param success code to give to 'GNUNET_SERVER_receive_done' for
+ *        the client:  GNUNET_OK to keep the connection open and
+ *                          continue to receive
+ *                GNUNET_NO to close the connection (normal behavior)
+ *                GNUNET_SYSERR to close the connection (signal
+ *                          serious error)
+ */
+void
+GNUNET_SERVER_transmit_context_destroy (struct GNUNET_SERVER_TransmitContext
+                                        *tc,
+                                       int success)
+{
+  GNUNET_SERVER_receive_done (tc->client, success);
+  GNUNET_SERVER_client_drop (tc->client);
+  GNUNET_free_non_null (tc->buf);
+  GNUNET_free (tc);
+}
+
+
 /* end of server_tc.c */




reply via email to

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