Handling account-db cleanup 79/195579/2 accepted/tizen/unified/20181220.061529 submit/tizen/20181218.105007
authorDewal Agarwal <d1.agarwal@samsung.com>
Fri, 14 Dec 2018 11:35:12 +0000 (17:05 +0530)
committerDewal Agarwal <d1.agarwal@samsung.com>
Tue, 18 Dec 2018 10:22:02 +0000 (15:52 +0530)
Change-Id: I798077664811a1fb550ba6ae702377df9bfb309d
Signed-off-by: Dewal Agarwal <d1.agarwal@samsung.com>
src/account.c

index aaa6400..b1c4d5d 100644 (file)
@@ -563,6 +563,38 @@ CATCH:
        return ret;
 }
 
+int _account_info_delete_from_db(const char* app_id, uid_t uid)
+{
+       ENTER();
+       _D("appid : %s uid : %d", app_id, uid);
+
+       int ret = ACCOUNT_ERROR_NONE;
+
+       if (OWNER_ROOT == uid || GLOBAL_USER == uid)
+               ret = account_delete_from_db_by_package_name_offline((char*)app_id);
+       else
+               ret = account_delete_from_db_by_package_name((char*)app_id);
+
+       if ((ret != ACCOUNT_ERROR_NONE) && (ret !=  ACCOUNT_ERROR_RECORD_NOT_FOUND)) {
+               _E("Failed to perform account_delete_from_db_by_package_name_offline().");
+               goto CATCH;
+       }
+
+       if (OWNER_ROOT == uid || GLOBAL_USER == uid)
+               ret = account_type_delete_by_app_id_offline((char*)app_id);
+       else
+               ret = account_type_delete_by_app_id((char*)app_id);
+
+       if (ret != ACCOUNT_ERROR_NONE) {
+               _E("Failed to perform account_type_delete_by_app_id().");
+               goto CATCH;
+       }
+
+CATCH:
+       return ret;
+}
+
+
 int _on_package_app_list_received_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
 {
        ENTER();
@@ -626,6 +658,10 @@ int _pkgmgr_parser_handle_plugin(const char* package_id, const char* pkgmgr_plug
                ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(package_id, uid, &package_info_handle);
 
        if (ret != PMINFO_R_OK) {
+               /*if pkgmgrinfo fails, delete account information assuming appId == package_id*/
+               if (ACCOUNT_ERROR_NONE != _account_info_delete_from_db(package_id, uid))
+                       _E("account info deletion failed");
+
                _E("[%d]Failed to pkgmgrinfo_pkginfo_get_pkginfo().", ret);
                ret = -1;
                goto FINISH;