Fix enable/disable pkgs handler 10/96210/1
authorSangyoon Jang <s89.jang@samsung.com>
Tue, 8 Nov 2016 07:12:10 +0000 (16:12 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Tue, 8 Nov 2016 07:12:10 +0000 (16:12 +0900)
Use one request key for each request.

Change-Id: I3ab60a450101761400d0913d71b5ab094f049b36
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
src/request.c

index 5f4668b..7345026 100644 (file)
@@ -60,12 +60,14 @@ static const char instropection_xml[] =
        "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='as' name='pkgids' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
+       "      <arg type='s' name='reqkey' direction='out'/>"
        "    </method>"
        "    <method name='disable_pkgs'>"
        "      <arg type='u' name='uid' direction='in'/>"
        "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='as' name='pkgids' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
+       "      <arg type='s' name='reqkey' direction='out'/>"
        "    </method>"
        "    <method name='enable_app'>"
        "      <arg type='u' name='uid' direction='in'/>"
@@ -542,38 +544,38 @@ static int __handle_request_enable_pkgs(uid_t uid,
 {
        uid_t target_uid = (uid_t)-1;
        char *pkgtype = NULL;
-       char *pkgid = NULL;
-       char *reqkey = NULL;
+       char *pkgid;
+       char *reqkey;
        GVariantIter *iter;
 
        g_variant_get(parameters, "(u&sas)", &target_uid, &pkgtype, &iter);
        if (target_uid == (uid_t)-1 || pkgtype == NULL || iter == NULL) {
                g_dbus_method_invocation_return_value(invocation,
-                               g_variant_new("(i)", PKGMGR_R_ECOMM));
+                               g_variant_new("(is)", PKGMGR_R_ECOMM, ""));
                return -1;
        }
 
-       while (g_variant_iter_loop(iter, "&s", &pkgid)) {
-               reqkey = __generate_reqkey(pkgid);
-               if (reqkey == NULL) {
-                       g_dbus_method_invocation_return_value(invocation,
-                                       g_variant_new("(i)", PKGMGR_R_ENOMEM));
-                       return -1;
-               }
+       reqkey = __generate_reqkey("enable_pkgs");
+       if (reqkey == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ENOMEM, ""));
+               return -1;
+       }
 
+       while (g_variant_iter_next(iter, "&s", &pkgid)) {
                if (_push_queue(target_uid, reqkey, REQUEST_TYPE_ENABLE_PKG,
                                        pkgtype, pkgid, NULL)) {
                        g_dbus_method_invocation_return_value(invocation,
-                                       g_variant_new("(i)", PKGMGR_R_ESYSTEM));
+                                       g_variant_new("(is)",
+                                               PKGMGR_R_ESYSTEM, ""));
                        free(reqkey);
                        return -1;
                }
-
-               free(reqkey);
        }
 
        g_dbus_method_invocation_return_value(invocation,
-                       g_variant_new("(i)", PKGMGR_R_OK));
+                       g_variant_new("(is)", PKGMGR_R_OK, reqkey));
+       free(reqkey);
 
        return 0;
 }
@@ -583,38 +585,38 @@ static int __handle_request_disable_pkgs(uid_t uid,
 {
        uid_t target_uid = (uid_t)-1;
        char *pkgtype = NULL;
-       char *pkgid = NULL;
-       char *reqkey = NULL;
+       char *pkgid;
+       char *reqkey;
        GVariantIter *iter;
 
        g_variant_get(parameters, "(u&sas)", &target_uid, &pkgtype, &iter);
        if (target_uid == (uid_t)-1 || pkgtype == NULL || iter == NULL) {
                g_dbus_method_invocation_return_value(invocation,
-                               g_variant_new("(i)", PKGMGR_R_ECOMM));
+                               g_variant_new("(is)", PKGMGR_R_ECOMM, ""));
                return -1;
        }
 
-       while (g_variant_iter_loop(iter, "&s", &pkgid)) {
-               reqkey = __generate_reqkey(pkgid);
-               if (reqkey == NULL) {
-                       g_dbus_method_invocation_return_value(invocation,
-                                       g_variant_new("(i)", PKGMGR_R_ENOMEM));
-                       return -1;
-               }
+       reqkey = __generate_reqkey("disable_pkgs");
+       if (reqkey == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ENOMEM, ""));
+               return -1;
+       }
 
+       while (g_variant_iter_next(iter, "&s", &pkgid)) {
                if (_push_queue(target_uid, reqkey, REQUEST_TYPE_DISABLE_PKG,
                                        pkgtype, pkgid, NULL)) {
                        g_dbus_method_invocation_return_value(invocation,
-                                       g_variant_new("(i)", PKGMGR_R_ESYSTEM));
+                                       g_variant_new("(is)",
+                                               PKGMGR_R_ESYSTEM, ""));
                        free(reqkey);
                        return -1;
                }
-
-               free(reqkey);
        }
 
        g_dbus_method_invocation_return_value(invocation,
-                       g_variant_new("(i)", PKGMGR_R_OK));
+                       g_variant_new("(is)", PKGMGR_R_OK, reqkey));
+       free(reqkey);
 
        return 0;
 }