commit 098b9d48733cf2374e4c1c6f4d9ec733edfe59d5
parent d533c72c5729ae7715b464f88e169b7993e77eb7
Author: TheJackiMonster <thejackimonster@gmail.com>
Date: Fri, 11 Feb 2022 00:27:44 +0100
Implemented workaround to delays with the scheduler
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
Diffstat:
2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/src/chat/messenger.c b/src/chat/messenger.c
@@ -42,6 +42,9 @@ _chat_messenger_quit(void *cls)
{
MESSENGER_Application *app = (MESSENGER_Application*) cls;
+ if (app->chat.messenger.idle)
+ GNUNET_SCHEDULER_cancel(app->chat.messenger.idle);
+
MESSENGER_ApplicationSignal signal;
int received = read(app->chat.pipe[0], &signal, sizeof(signal));
@@ -60,6 +63,19 @@ _chat_messenger_quit(void *cls)
GNUNET_SCHEDULER_shutdown();
}
+static void
+_chat_messenger_idle(void *cls)
+{
+ MESSENGER_Application *app = (MESSENGER_Application*) cls;
+
+ app->chat.messenger.idle = GNUNET_SCHEDULER_add_delayed_with_priority(
+ GNUNET_TIME_relative_get_second_(),
+ GNUNET_SCHEDULER_PRIORITY_IDLE,
+ &_chat_messenger_idle,
+ app
+ );
+}
+
static int
_chat_messenger_message(void *cls,
struct GNUNET_CHAT_Context *context,
@@ -186,5 +202,10 @@ chat_messenger_run(void *cls,
app
);
+ app->chat.messenger.idle = GNUNET_SCHEDULER_add_now(
+ &_chat_messenger_idle,
+ app
+ );
+
GNUNET_NETWORK_fdset_destroy(fd);
}
diff --git a/src/chat/messenger.h b/src/chat/messenger.h
@@ -36,6 +36,7 @@ typedef struct CHAT_MESSENGER_Handle
{
struct GNUNET_CHAT_Handle *handle;
struct GNUNET_SCHEDULER_Task *quit;
+ struct GNUNET_SCHEDULER_Task *idle;
} CHAT_MESSENGER_Handle;
void