gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r16859 - gnunet/src/transport
Date: Thu, 15 Sep 2011 12:04:40 +0200

Author: wachs
Date: 2011-09-15 12:04:40 +0200 (Thu, 15 Sep 2011)
New Revision: 16859

Modified:
   gnunet/src/transport/plugin_transport_http_client.c
   gnunet/src/transport/plugin_transport_http_new.c
   gnunet/src/transport/plugin_transport_http_server.c
Log:
pre-launch commit


Modified: gnunet/src/transport/plugin_transport_http_client.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_client.c 2011-09-15 09:31:18 UTC 
(rev 16858)
+++ gnunet/src/transport/plugin_transport_http_client.c 2011-09-15 10:04:40 UTC 
(rev 16859)
@@ -58,39 +58,6 @@
 #endif
 
 int
-client_disconnect (struct Session *s)
-{
-  int res = GNUNET_OK;
-  CURLMcode mret;
-
-#if DEBUG_HTTP
-  GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, s->plugin->name,
-                   "Deleting outbound session peer `%s'\n",
-                   GNUNET_i2s (&s->target));
-#endif
-
-  mret = curl_multi_remove_handle (s->plugin->client_mh, s->client_put);
-  if (mret != CURLM_OK)
-  {
-    curl_easy_cleanup (s->client_put);
-    res = GNUNET_SYSERR;
-    GNUNET_break (0);
-  }
-  curl_easy_cleanup (s->client_put);
-
-  mret = curl_multi_remove_handle (s->plugin->client_mh, s->client_get);
-  if (mret != CURLM_OK)
-  {
-    curl_easy_cleanup (s->client_get);
-    res = GNUNET_SYSERR;
-    GNUNET_break (0);
-  }
-  curl_easy_cleanup (s->client_get);
-
-  return res;
-}
-
-int
 client_send (struct Session *s, const char *msgbuf, size_t msgbuf_size)
 {
   return GNUNET_OK;
@@ -102,7 +69,7 @@
  * @param tc gnunet scheduler task context
  */
 static void
-client_perform (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
+client_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
 
 /**
  * Function setting up file descriptors and scheduling task to run
@@ -111,7 +78,7 @@
  * @return GNUNET_SYSERR for hard failure, GNUNET_OK for ok
  */
 static int
-client_schedule_next_perform (struct Plugin *plugin)
+client_schedule (struct Plugin *plugin)
 {
   fd_set rs;
   fd_set ws;
@@ -165,7 +132,7 @@
                                    timeout,
                                    grs,
                                    gws,
-                                   &client_perform,
+                                   &client_run,
                                    plugin);
   GNUNET_NETWORK_fdset_destroy (gws);
   GNUNET_NETWORK_fdset_destroy (grs);
@@ -179,7 +146,7 @@
  * @param tc gnunet scheduler task context
  */
 static void
-client_perform (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+client_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct Plugin *plugin = cls;
   static unsigned int handles_last_run;
@@ -203,10 +170,54 @@
     handles_last_run = running;
   }
   while (mret == CURLM_CALL_MULTI_PERFORM);
-  client_schedule_next_perform (plugin);
+  client_schedule (plugin);
 }
 
 int
+client_disconnect (struct Session *s)
+{
+  int res = GNUNET_OK;
+  CURLMcode mret;
+  struct Plugin *plugin = s->plugin;
+
+#if DEBUG_HTTP
+  GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+                   "Deleting outbound session peer `%s'\n",
+                   GNUNET_i2s (&s->target));
+#endif
+
+  mret = curl_multi_remove_handle (plugin->client_mh, s->client_put);
+  if (mret != CURLM_OK)
+  {
+    curl_easy_cleanup (s->client_put);
+    res = GNUNET_SYSERR;
+    GNUNET_break (0);
+  }
+  curl_easy_cleanup (s->client_put);
+
+  mret = curl_multi_remove_handle (plugin->client_mh, s->client_get);
+  if (mret != CURLM_OK)
+  {
+    curl_easy_cleanup (s->client_get);
+    res = GNUNET_SYSERR;
+    GNUNET_break (0);
+  }
+  curl_easy_cleanup (s->client_get);
+
+  /* Re-schedule since handles have changed */
+  if (plugin->client_perform_task!= GNUNET_SCHEDULER_NO_TASK)
+  {
+    GNUNET_SCHEDULER_cancel (plugin->client_perform_task);
+    plugin->client_perform_task = GNUNET_SCHEDULER_NO_TASK;
+  }
+
+  plugin->client_perform_task = GNUNET_SCHEDULER_add_now(client_run, plugin);
+
+  return res;
+}
+
+
+int
 client_connect (struct Session *s)
 {
   int res = GNUNET_OK;
@@ -311,7 +322,7 @@
   }
 
   /* Perform connect */
-  s->plugin->client_perform_task = GNUNET_SCHEDULER_add_now (client_perform, 
s->plugin);
+  s->plugin->client_perform_task = GNUNET_SCHEDULER_add_now (client_run, 
s->plugin);
 
   return res;
 }

Modified: gnunet/src/transport/plugin_transport_http_new.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_new.c    2011-09-15 09:31:18 UTC 
(rev 16858)
+++ gnunet/src/transport/plugin_transport_http_new.c    2011-09-15 10:04:40 UTC 
(rev 16859)
@@ -421,6 +421,19 @@
   return s;
 }
 
+void
+notify_session_end (void *cls,
+                    const struct GNUNET_PeerIdentity *
+                    peer, struct Session * s)
+{
+  struct Plugin *plugin = cls;
+
+  plugin->env->session_end (NULL, peer, s);
+  GNUNET_CONTAINER_DLL_remove (plugin->head, plugin->tail, s);
+  delete_session (s);
+}
+
+
 /**
  * Function that can be used by the transport service to transmit
  * a message using the plugin.   Note that in the case of a

Modified: gnunet/src/transport/plugin_transport_http_server.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_server.c 2011-09-15 09:31:18 UTC 
(rev 16858)
+++ gnunet/src/transport/plugin_transport_http_server.c 2011-09-15 10:04:40 UTC 
(rev 16859)
@@ -256,7 +256,7 @@
  * @return gnunet task identifier
  */
 static GNUNET_SCHEDULER_TaskIdentifier
-server_schedule_daemon (struct Plugin *plugin, struct MHD_Daemon 
*daemon_handle);
+server_schedule (struct Plugin *plugin, struct MHD_Daemon *daemon_handle);
 
 /**
  * Call MHD IPv4 to process pending requests and then go back
@@ -265,7 +265,7 @@
  * @param tc task context
  */
 static void
-http_server_daemon_v4_run (void *cls,
+server_v4_run (void *cls,
                            const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct Plugin *plugin = cls;
@@ -277,7 +277,7 @@
     return;
 
   GNUNET_assert (MHD_YES == MHD_run (plugin->server_v4));
-  plugin->server_v4_task = server_schedule_daemon (plugin, plugin->server_v4);
+  plugin->server_v4_task = server_schedule (plugin, plugin->server_v4);
 }
 
 
@@ -288,7 +288,7 @@
  * @param tc task context
  */
 static void
-http_server_daemon_v6_run (void *cls,
+server_v6_run (void *cls,
                            const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct Plugin *plugin = cls;
@@ -300,7 +300,7 @@
     return;
 
   GNUNET_assert (MHD_YES == MHD_run (plugin->server_v6));
-  plugin->server_v6_task = server_schedule_daemon (plugin, plugin->server_v6);
+  plugin->server_v6_task = server_schedule (plugin, plugin->server_v6);
 }
 
 /**
@@ -311,7 +311,7 @@
  * @return gnunet task identifier
  */
 static GNUNET_SCHEDULER_TaskIdentifier
-server_schedule_daemon (struct Plugin *plugin, struct MHD_Daemon 
*daemon_handle)
+server_schedule (struct Plugin *plugin, struct MHD_Daemon *daemon_handle)
 {
   GNUNET_SCHEDULER_TaskIdentifier ret;
   fd_set rs;
@@ -353,7 +353,7 @@
     ret =
         GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_DEFAULT,
                                      GNUNET_SCHEDULER_NO_TASK, tv, wrs, wws,
-                                     &http_server_daemon_v4_run, plugin);
+                                     &server_v4_run, plugin);
   }
   if (daemon_handle == plugin->server_v6)
   {
@@ -366,7 +366,7 @@
     ret =
         GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_DEFAULT,
                                      GNUNET_SCHEDULER_NO_TASK, tv, wrs, wws,
-                                     &http_server_daemon_v6_run, plugin);
+                                     &server_v6_run, plugin);
   }
   GNUNET_NETWORK_fdset_destroy (wrs);
   GNUNET_NETWORK_fdset_destroy (wws);
@@ -468,9 +468,9 @@
   }
 
   if (plugin->server_v4 != NULL)
-    plugin->server_v4_task = server_schedule_daemon (plugin, 
plugin->server_v4);
+    plugin->server_v4_task = server_schedule (plugin, plugin->server_v4);
   if (plugin->server_v6 != NULL)
-    plugin->server_v6_task = server_schedule_daemon (plugin, 
plugin->server_v6);
+    plugin->server_v6_task = server_schedule (plugin, plugin->server_v6);
 
 #if DEBUG_HTTP
   GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,




reply via email to

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