I'm implementing a GUI for ConnMan in EFL and I've noticed a strange behavior:

1 - launch an agent that returns error (net.connman.Agent.Error.Canceled)
2 - call Connect() on a service that triggers RequestInput
3 - return an error from agent.
4 - Connect() is not notified

Problem seems to be it calls __connman_service_return_error() that will call:

    __connman_service_set_hidden_data(service, user_data);
    reply_pending(service, error);

but in __connman_service_set_hidden_data(service, user_data) it does:
        DBusMessage *pending = user_data;
        service->pending = pending;

however my log shows user_data is NULL. Then effectivly "set hidden
data" is removing pending call, then no Connect() is aborted. See log:

connmand[24834]: src/service.c:request_input_cb() RequestInput return, 0x1419400
connmand[24834]: src/service.c:request_input_cb() error:
net.connman.Agent.Error.Canceled
connmand[24834]: src/service.c:__connman_service_return_error()
service 0x1419400 error 22 user_data (nil)
connmand[24834]: src/service.c:__connman_service_set_hidden_data()
service 0x1419400 pending (nil)
connmand[24834]: src/service.c:check_pending_msg() service 0x1419400
pending msg 0x13feda0 already exists

(no log for reply_pending() as it does not have it)

I'm not aware why user_data is NULL or why it's doing "set hidden
data" before replying with error.

If I change set hidden data *AFTER* reply_pending(), then it works as
in the attached patch.

-- 
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: [email protected]
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202

Attachment: 0001-On-error-reply-before-setting-hidden-data.patch
Description: Binary data

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to