Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca0d4ffb authored by Daichi Hirono's avatar Daichi Hirono
Browse files

Fix BridgeEpollController to handles EAGAIN correctly

When reading/writing proxy FD, if it returns EAGAIN,
BridgeEpollController updates epoll entries to observe specific FD
events. Before updating epoll entries, BridgeEpollController checks if
it really needs to update by comparing |state_| and |last_state_|.
|last_state_| has not been updated correctly so it resulted in wrong
epoll settings and keeps blocking the event loop.

Bug: 134104939
Test: atest libappfuse_test
Change-Id: I1c4a0164c1c016baf24ecfd523476ced981d3b28
parent cc18faf4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ class FuseBridgeEntry {
        const bool proxy_read_ready = last_proxy_events_.events & EPOLLIN;
        const bool proxy_write_ready = last_proxy_events_.events & EPOLLOUT;

        last_state_ = state_;
        last_device_events_.events = 0;
        last_proxy_events_.events = 0;