-
The function finish_cb can be called as a result of a call to ca_context_cancel in cancelled_cb. This will result in a deadlock because, as per documentation, g_cancellable_disconnect cannot be called inside the cancellable handler. It is possible to detect if the call to finish_cb is caused by ca_context_cancel checking if error_code == CA_ERROR_CANCELED. To avoid the deadlock we should call g_signal_handler_disconnect instead g_cancellable_disconnect if this is the case. !474
8856a396