• spiiroin's avatar
    [usb-moded] Fix issues on exit path. MER#1694 · b3e2f370
    spiiroin authored
    Exiting from mainloop does not work as intended, looks like handle_exit()
    is meant to be called from main() function after mainloop is stopped. What
    happens in practice is that handle_exit() gets called from signal handler
    and it makes exit() without ever returning to main() function - which
    means some cleanup tasks are skipped.
    In general: Make cleanup tasks happen on the same logical level where
    initialization is made, re-order init/cleanup tasks according to what
    functional inter dependencies exist and add comments describing why
    things are done when they are done.
    Remove handle_exit() function and distribute work it used to do among:
    - usb_moded_stop() - exiting from mainloop
    - usb_moded_cleanup() - releasing usb-mode related state/config data
    - main() - cleaning up init steps made from main()
    To make possible ordering issues more visible, refuse to send usb-moded
    dbus signals in situations where the service name is not owned by the
    ubs-moded process.
    Signed-off-by: spiiroin's avatarSimo Piiroinen <simo.piiroinen@jollamobile.com>
usb_moded-dbus.c 23 KB