From a9e19b4ce2888312e43007d28928da45cf91f507 Mon Sep 17 00:00:00 2001 From: Jonathan Aillet Date: Wed, 14 Aug 2019 17:58:29 +0200 Subject: Avoid epoll errors to be fired indefinitely When a audio card with control event generation is removed, avoid epoll errors to be fired indefinitely by event loop. Bug-AGL: SPEC-2749 Change-Id: I65dddc2f9714fa2303773b212bc3cad7cb164d73 Signed-off-by: Jonathan Aillet --- alsa-binding/Alsa-RegEvt.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/alsa-binding/Alsa-RegEvt.c b/alsa-binding/Alsa-RegEvt.c index 974431e..36bb590 100644 --- a/alsa-binding/Alsa-RegEvt.c +++ b/alsa-binding/Alsa-RegEvt.c @@ -101,6 +101,12 @@ STATIC int sndCtlEventCB(sd_event_source* src, int fd, uint32_t revents, void* u ctlRequestT ctlRequest; snd_ctl_elem_id_t *elemId; + if ((revents & EPOLLERR) != 0) { + AFB_ERROR("An error has been send by event loop polling, prevent new errors to be fired by deleting event src"); + sd_event_source_unref(src); + return -1; + } + if ((revents & EPOLLHUP) != 0) { AFB_NOTICE("SndCtl hanghup [car disconnected]"); goto ExitOnSucess; -- cgit 1.2.3-korg