homescreen/hs-proxy: Guard against empty appids
[apps/agl-service-homescreen.git] / src / hs-proxy.cpp
index 33cfce3..ea8976c 100644 (file)
@@ -43,6 +43,7 @@ const char _afm_main[] = "afm-main";
 static void api_callback(void *closure, struct json_object *object, const char *error, const char *info, afb_api_t api)
 {
     AFB_INFO("asynchronous call, error=%s, info=%s, object=%s.", error, info, json_object_get_string(object));
+    (void) api;
     struct closure_data *cdata = static_cast<struct closure_data *>(closure);
 
     if (!cdata->hs_instance) {
@@ -56,7 +57,7 @@ static void api_callback(void *closure, struct json_object *object, const char *
 
     /* if we have an error then we couldn't start the application so we remove it */
     if (error) {
-           clientManager->removeClientCtxt(cdata->clientCtx);
+          AFB_INFO("asynchronous call, removing client %s", cdata->appid.c_str());
            clientManager->removeClient(cdata->appid);
     }
 
@@ -122,6 +123,23 @@ int HS_AfmMainProxy::runnables(afb_api_t api, struct json_object **object)
     return api_call_sync(api, _afm_main, __FUNCTION__, nullptr, object);
 }
 
+/**
+ * get running application list
+ *
+ * #### Parameters
+ *  - api : the api serving the request
+ *  - object : return the details of appid
+ *
+ * #### Return
+ *  0 : success
+ *  1 : fail
+ *
+ */
+int HS_AfmMainProxy::ps(afb_api_t api, struct json_object **object)
+{
+    return api_call_sync(api, _afm_main, "runners", nullptr, object);
+}
+
 /**
  * get details of application
  *
@@ -167,7 +185,7 @@ void HS_AfmMainProxy::start(struct hs_instance *instance, afb_req_t request, con
      * and client context there. We pass the closure_data with the client context
      * and the application id to remove it.
      */
-    if (!instance)
+    if (!instance || id.empty())
            return;
 
     cdata = static_cast<struct closure_data *>(calloc(1, sizeof(*cdata)));
@@ -179,12 +197,6 @@ void HS_AfmMainProxy::start(struct hs_instance *instance, afb_req_t request, con
            return;
     }
 
-    cdata->clientCtx = clientManager->createClientCtxt(request, id);
-    HS_Client *client = clientManager->addClient(request, id);
-    if (client) {
-           if (client->handleRequest(request, "subscribe"))
-                   AFB_WARNING("Failed to handle subcribe\n");
-    }
-
+    clientManager->addClient(request, id);
     api_call(request->api, _afm_main, __FUNCTION__, json_object_new_string(id.c_str()), cdata);
 }