err = __connman_service_connect(service);
if (err < 0) {
- if (err == -ENOKEY) {
- if (__connman_agent_request_input(service,
- request_input_cb,
- NULL) == 0)
- return NULL;
- }
-
if (service->pending == NULL)
return NULL;
return -EINPROGRESS;
}
- if (err == -ENOKEY)
- return -ENOKEY;
-
- if (service->userconnect == TRUE)
- reply_pending(service, err);
-
__connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV4);
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV6);
+ __connman_network_disconnect(service->network);
+
+ if (service->userconnect == TRUE) {
+ if (err == -ENOKEY) {
+ if (__connman_agent_request_input(service,
+ request_input_cb,
+ NULL) == -EIO)
+ return -EINPROGRESS;
+ }
+ reply_pending(service, err);
+ }
+
return err;
}