From ba1f3e26cb5f5f3e95480cb5c6a519a87c4c5d88 Mon Sep 17 00:00:00 2001 From: José Bollo Date: Fri, 17 Nov 2017 16:51:02 +0100 Subject: afb-proto-ws: Fix autolock in proto-ws MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because a systemd event loop can not be reentered while evaluating an event callback, the event loop was removed from the threads. It had the effect to enter in deadlock when calling a synchronous call while in an event callback. Queueing a job solves the issue. But because using queued job has implications on libafbws, a fake job manager is added for libafbws. Change-Id: Id793bea55743790082eaab48cd4cc87f7993772a Signed-off-by: José Bollo --- src/jobs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/jobs.c') diff --git a/src/jobs.c b/src/jobs.c index b7d16112..78131fcd 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -363,8 +363,10 @@ static void thread_run(volatile struct thread *me) events = current_events; if (!events) events = events_get(); - else if (events->state == Locked) + else if (events->state == Locked) { events = 0; + AFB_WARNING("Loosing an event loop because reentering"); + } if (events) { /* run the events */ events->state = Locked; -- cgit 1.2.3-korg