diff options
Diffstat (limited to 'src/transport/plugin_transport_http_server.c')
-rw-r--r-- | src/transport/plugin_transport_http_server.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/transport/plugin_transport_http_server.c b/src/transport/plugin_transport_http_server.c index 272ecb645..b55c47582 100644 --- a/src/transport/plugin_transport_http_server.c +++ b/src/transport/plugin_transport_http_server.c | |||
@@ -236,6 +236,12 @@ server_reschedule (struct Plugin *plugin, struct MHD_Daemon *server, int now) | |||
236 | { | 236 | { |
237 | if ((server == plugin->server_v4) && (plugin->server_v4 != NULL)) | 237 | if ((server == plugin->server_v4) && (plugin->server_v4 != NULL)) |
238 | { | 238 | { |
239 | if (GNUNET_YES == plugin->server_v4_immediately) | ||
240 | return; /* No rescheduling, server will run asap */ | ||
241 | |||
242 | if (GNUNET_YES == now) | ||
243 | plugin->server_v4_immediately = GNUNET_YES; | ||
244 | |||
239 | if (plugin->server_v4_task != GNUNET_SCHEDULER_NO_TASK) | 245 | if (plugin->server_v4_task != GNUNET_SCHEDULER_NO_TASK) |
240 | { | 246 | { |
241 | GNUNET_SCHEDULER_cancel (plugin->server_v4_task); | 247 | GNUNET_SCHEDULER_cancel (plugin->server_v4_task); |
@@ -246,6 +252,12 @@ server_reschedule (struct Plugin *plugin, struct MHD_Daemon *server, int now) | |||
246 | 252 | ||
247 | if ((server == plugin->server_v6) && (plugin->server_v6 != NULL)) | 253 | if ((server == plugin->server_v6) && (plugin->server_v6 != NULL)) |
248 | { | 254 | { |
255 | if (GNUNET_YES == plugin->server_v6_immediately) | ||
256 | return; /* No rescheduling, server will run asap */ | ||
257 | |||
258 | if (GNUNET_YES == now) | ||
259 | plugin->server_v6_immediately = GNUNET_YES; | ||
260 | |||
249 | if (plugin->server_v6_task != GNUNET_SCHEDULER_NO_TASK) | 261 | if (plugin->server_v6_task != GNUNET_SCHEDULER_NO_TASK) |
250 | { | 262 | { |
251 | GNUNET_SCHEDULER_cancel (plugin->server_v6_task); | 263 | GNUNET_SCHEDULER_cancel (plugin->server_v6_task); |
@@ -917,17 +929,15 @@ server_v4_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
917 | GNUNET_assert (cls != NULL); | 929 | GNUNET_assert (cls != NULL); |
918 | 930 | ||
919 | plugin->server_v4_task = GNUNET_SCHEDULER_NO_TASK; | 931 | plugin->server_v4_task = GNUNET_SCHEDULER_NO_TASK; |
920 | |||
921 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) | 932 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) |
922 | return; | 933 | return; |
923 | #if 0 | 934 | #if 0 |
924 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name, | 935 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name, |
925 | "Running IPv4 server\n"); | 936 | "Running IPv4 server\n"); |
926 | #endif | 937 | #endif |
938 | plugin->server_v4_immediately = GNUNET_NO; | ||
927 | GNUNET_assert (MHD_YES == MHD_run (plugin->server_v4)); | 939 | GNUNET_assert (MHD_YES == MHD_run (plugin->server_v4)); |
928 | if (plugin->server_v4 != NULL) | 940 | server_reschedule (plugin, plugin->server_v4, GNUNET_NO); |
929 | plugin->server_v4_task = | ||
930 | server_schedule (plugin, plugin->server_v4, GNUNET_NO); | ||
931 | } | 941 | } |
932 | 942 | ||
933 | 943 | ||
@@ -943,19 +953,16 @@ server_v6_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
943 | struct Plugin *plugin = cls; | 953 | struct Plugin *plugin = cls; |
944 | 954 | ||
945 | GNUNET_assert (cls != NULL); | 955 | GNUNET_assert (cls != NULL); |
946 | |||
947 | plugin->server_v6_task = GNUNET_SCHEDULER_NO_TASK; | 956 | plugin->server_v6_task = GNUNET_SCHEDULER_NO_TASK; |
948 | |||
949 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) | 957 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) |
950 | return; | 958 | return; |
951 | #if 0 | 959 | #if 0 |
952 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name, | 960 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name, |
953 | "Running IPv6 server\n"); | 961 | "Running IPv6 server\n"); |
954 | #endif | 962 | #endif |
963 | plugin->server_v6_immediately = GNUNET_NO; | ||
955 | GNUNET_assert (MHD_YES == MHD_run (plugin->server_v6)); | 964 | GNUNET_assert (MHD_YES == MHD_run (plugin->server_v6)); |
956 | if (plugin->server_v6 != NULL) | 965 | server_reschedule (plugin, plugin->server_v6, GNUNET_NO); |
957 | plugin->server_v6_task = | ||
958 | server_schedule (plugin, plugin->server_v6, GNUNET_NO); | ||
959 | } | 966 | } |
960 | 967 | ||
961 | /** | 968 | /** |