[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: [transport] suspend connect
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: [transport] suspend connection to avoid busy-wait |
Date: |
Tue, 13 Jun 2017 06:51:13 +0200 |
This is an automated email from the git hooks/post-receive script.
david-barksdale pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new 1fc3df9be [transport] suspend connection to avoid busy-wait
1fc3df9be is described below
commit 1fc3df9be3dd51b14f752ea1a9e623aa781192bd
Author: David Barksdale <address@hidden>
AuthorDate: Mon Jun 12 23:50:25 2017 -0500
[transport] suspend connection to avoid busy-wait
---
src/transport/plugin_transport_http_server.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/src/transport/plugin_transport_http_server.c
b/src/transport/plugin_transport_http_server.c
index ff2d68602..e3d5e9a01 100644
--- a/src/transport/plugin_transport_http_server.c
+++ b/src/transport/plugin_transport_http_server.c
@@ -92,6 +92,11 @@ struct ServerRequest
*/
int connected;
+ /**
+ * Currently suspended
+ */
+ bool suspended;
+
};
@@ -501,7 +506,9 @@ server_wake_up (void *cls)
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Session %p: Waking up PUT handle\n",
s);
+ GNUNET_assert (s->server_recv->suspended);
MHD_resume_connection (s->server_recv->mhd_conn);
+ s->server_recv->suspended = false;
}
@@ -541,7 +548,11 @@ server_delete_session (struct GNUNET_ATS_Session *s)
GNUNET_SCHEDULER_cancel (s->recv_wakeup_task);
s->recv_wakeup_task = NULL;
if (NULL != s->server_recv)
+ {
+ GNUNET_assert (s->server_recv->suspended);
MHD_resume_connection (s->server_recv->mhd_conn);
+ s->server_recv->suspended = false;
+ }
}
GNUNET_assert (GNUNET_OK ==
GNUNET_CONTAINER_multipeermap_remove (plugin->sessions,
@@ -760,9 +771,16 @@ http_server_plugin_send (void *cls,
GNUNET_free (stat_txt);
if (NULL != session->server_send)
+ {
+ if (session->server_send->suspended)
+ {
+ MHD_resume_connection (session->server_send->mhd_conn);
+ session->server_send->suspended = false;
+ }
server_reschedule (session->plugin,
session->server_send->mhd_daemon,
GNUNET_YES);
+ }
return bytes_sent;
}
@@ -1613,6 +1631,12 @@ server_send_callback (void *cls,
s);
return MHD_CONTENT_READER_END_OF_STREAM;
}
+ else
+ {
+ MHD_suspend_connection (s->server_send->mhd_conn);
+ s->server_send->suspended = true;
+ return 0;
+ }
return bytes_read;
}
@@ -1868,6 +1892,7 @@ server_access_cb (void *cls,
GNUNET_YES));
GNUNET_assert(s->server_recv->mhd_conn == mhd_connection);
MHD_suspend_connection (s->server_recv->mhd_conn);
+ s->server_recv->suspended = true;
if (NULL == s->recv_wakeup_task)
s->recv_wakeup_task
= GNUNET_SCHEDULER_add_delayed (delay,
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet] branch master updated: [transport] suspend connection to avoid busy-wait,
gnunet <=