info->callback(info->userdata, result, passkey);
}
-void conv::acl_manager::LaunchPasskeyInputPopup(PopupCallback callback, void *userdata)
+int conv::acl_manager::LaunchPasskeyInputPopup(PopupCallback callback, void *userdata)
{
bundle *b = NULL;
b = bundle_create();
int ret = syspopup_launch((char *)"d2d-conv-syspopup", b);
if (ret != 0) {
_E("syspopup_launch Error (%d).", ret);
+ bundle_free(b);
+ return ACLResult_Error;
}
bundle_free(b);
info = (usercallback_info *)malloc(sizeof(usercallback_info)*1);
+ if (info == NULL) {
+ _E("info allocation failed in syspopup_launch Error.");
+ return ACLResult_Error;
+ }
+
info->callback = callback;
info->userdata = userdata;
app_control_add_extra_data(app_control, "MESSAGE", "REGIST_CALLBACK");
app_control_send_launch_request(app_control, LaunchPasskeyInputPopupCallback, info);
app_control_destroy(app_control);
+
+ return ACLResult_OK;
}
-void conv::acl_manager::LaunchPasskeyShowPopup(const char *deviceName)
+int conv::acl_manager::LaunchPasskeyShowPopup(const char *deviceName)
{
CreatePasskey();
int ret = syspopup_launch((char *)"d2d-conv-syspopup", b);
if (ret != 0) {
_E("syspopup_launch Error (%d).", ret);
+ bundle_free(b);
+ return ACLResult_Error;
}
bundle_free(b);
+
+ return ACLResult_OK;
}
static void LaunchToast(char *type, char *data)
typedef void (*PopupCallback)(void *userdata, int result, char *passkey);
- void LaunchPasskeyShowPopup(const char *deviceName);
- void LaunchPasskeyInputPopup(PopupCallback callback, void *userdata);
+ int LaunchPasskeyShowPopup(const char *deviceName);
+ int LaunchPasskeyInputPopup(PopupCallback callback, void *userdata);
void LaunchPopupCancelToast();
void LaunchPasskeyWrongToast();
policy = CONV_ACCESS_CONTROL_DENIED;
} else if (acManagerPolicy == ACMANAGER_POLICY_U2) {
_D("UNDECIDED");
- conv::acl_manager::LaunchPasskeyShowPopup(deviceName);
- policy = CONV_ACCESS_CONTROL_PASSKEY_REQUEST;
+ int popup_err = conv::acl_manager::LaunchPasskeyShowPopup(deviceName);
+ if(popup_err == ACLResult_Error) {
+ _E("ACLResult is Error");
+ policy = CONV_ACCESS_CONTROL_PASSKEY_CANCEL;
+ } else {
+ policy = CONV_ACCESS_CONTROL_PASSKEY_REQUEST;
+ }
}
_D("acManagerPolicy:%d", acManagerPolicy);
#else
conv::acl_manager::SetDeviceInfoAndACL(macAddress, deviceType, deviceName, ip.c_str(), ACMANAGER_POLICY_P);
conv::acl_manager::LaunchAccessAllowedToast(deviceName);
} else if (ret == ACLResult_Error) {
+ _E("ACLResult is Error");
policy = CONV_ACCESS_CONTROL_PASSKEY_WRONG;
} else if (ret == ACLResult_Close) {
policy = CONV_ACCESS_CONTROL_PASSKEY_REJECTED;
} else if (!strcmp(CONV_ACCESS_CONTROL_PASSKEY_REQUEST, accessControlResult)) {
#if defined(_D2D_INTERNAL_ACL_)
_D("__on_access_response PASSKEY REQUEST");
- conv::acl_manager::LaunchPasskeyInputPopup(passkey_popup_callback, svcInfo);
+ int popup_err = conv::acl_manager::LaunchPasskeyInputPopup(passkey_popup_callback, svcInfo);
+ if (popup_err == ACLResult_Error) {
+ _E("ACLResult is Error");
+ conv::Json result;
+ svcInfo->accessControlState = ACCESS_CONTROL_STATE_DENIED;
+ sendResponse(result, CONV_JSON_ON_START, CONV_ERROR_INVALID_OPERATION, svcInfo->registeredRequest);
+ }
return;
#endif
} else if (!strcmp(CONV_ACCESS_CONTROL_PASSKEY_RIGHT, accessControlResult)) {