afb-supervision: Fix error on 'trace'
[src/app-framework-binder.git] / src / afb-supervision.c
index f41ca18..1ff8f8b 100644 (file)
@@ -43,6 +43,7 @@
 #include "afs-supervision.h"
 #include "afb-stub-ws.h"
 #include "afb-debug.h"
+#include "afb-fdev.h"
 #include "verbose.h"
 #include "wrap-json.h"
 #include "jobs.h"
@@ -138,6 +139,7 @@ static void try_connect_supervisor()
        int fd;
        ssize_t srd;
        struct afs_supervision_initiator initiator;
+       struct fdev *fdev;
 
        /* get the mutex */
        pthread_mutex_lock(&mutex);
@@ -195,10 +197,15 @@ static void try_connect_supervisor()
        }
 
        /* make the supervisor link */
-       supervisor = afb_stub_ws_create_server(fd, supervision_apiname, supervision_apiset);
+       fdev = afb_fdev_create(fd);
+       if (!fdev) {
+               ERROR("Creation of fdev failed: %m");
+               goto end2;
+       }
+       supervisor = afb_stub_ws_create_server(fdev, supervision_apiname, supervision_apiset);
        if (!supervisor) {
                ERROR("Creation of supervisor failed: %m");
-               goto end2;
+               goto end;
        }
        afb_stub_ws_on_hangup(supervisor, on_supervisor_hangup);
 
@@ -284,7 +291,6 @@ static const char *verbs[] = {
        "break", "config", "do", "exit", "sclose", "slist", "trace", "wait" };
 enum  {  Break ,  Config ,  Do ,  Exit ,  Sclose ,  Slist ,  Trace ,  Wait  };
 
-
 static void on_supervision_call(void *closure, struct afb_xreq *xreq)
 {
        int i, rc;
@@ -342,7 +348,8 @@ static void on_supervision_call(void *closure, struct afb_xreq *xreq)
                if (!trace)
                        trace = afb_trace_create(supervision_apiname, NULL /* not bound to any session */);
 
-               req = afb_xreq_unstore((struct afb_stored_req*)xreq);
+               req = xreq_to_req(xreq);
+               add = drop = NULL;
                wrap_json_unpack(args, "{s?o s?o}", "add", &add, "drop", &drop);
                if (add) {
                        rc = afb_trace_add(req, add, trace);