afb-api-so-v3: Keep root API in all cases 85/17185/1
authorJosé Bollo <jose.bollo@iot.bzh>
Fri, 12 Oct 2018 12:29:43 +0000 (14:29 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Fri, 12 Oct 2018 12:32:56 +0000 (14:32 +0200)
For bindings v3, it is possible to have no
explicit default root API.

In that case, the binder creates a fake API
that references the binding itself. That api
isn't callable be it allows to emit messages,
to catch events and to call services (other
apis).

It must be kept to ensure that there is no
further error in the hypothetical case where
it is used.

Bug-AGL: SPEC-1812

Change-Id: I1a6c1e1390411a45521b9a6c1c386dc7807191df
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afb-api-so-v3.c

index 373386e..727e9b6 100644 (file)
@@ -117,7 +117,14 @@ int afb_api_so_v3_add(const char *path, void *handle, struct afb_apiset *declare
 
                export = afb_export_create_none_for_path(declare_set, call_set, path, init, &a);
                if (export) {
-                       afb_export_unref(export);
+                       /*
+                        *  No call is done to afb_export_unref(export) because:
+                        *   - legacy applications may use the root API emitting messages
+                        *   - it allows writting applications like bindings without API
+                        *  But this has the sad effect to introduce a kind of leak.
+                        *  To avoid this, if necessary further developement should list bindings
+                        *  and their data.
+                        */
                        return 1;
                }
        }