Use names for constants
[src/app-framework-binder.git] / src / main.c
index 32b12dd..6684ed5 100644 (file)
@@ -44,6 +44,7 @@
 #include "afb-context.h"
 #include "afb-hreq.h"
 #include "afb-xreq.h"
+#include "afb-cred.h"
 #include "jobs.h"
 #include "afb-session.h"
 #include "verbose.h"
@@ -446,9 +447,9 @@ struct startup_req
        struct afb_session *session;
 };
 
-static void startup_call_reply(void *closure, int iserror, struct json_object *obj)
+static void startup_call_reply(struct afb_xreq *xreq, int iserror, struct json_object *obj)
 {
-       struct startup_req *sreq = closure;
+       struct startup_req *sreq = CONTAINER_OF_XREQ(struct startup_req, xreq);
 
        if (!iserror)
                NOTICE("startup call %s returned %s", sreq->current->value, json_object_get_string(obj));
@@ -460,13 +461,14 @@ static void startup_call_reply(void *closure, int iserror, struct json_object *o
 
 static void startup_call_current(struct startup_req *sreq);
 
-static void startup_call_unref(void *closure)
+static void startup_call_unref(struct afb_xreq *xreq)
 {
-       struct startup_req *sreq = closure;
+       struct startup_req *sreq = CONTAINER_OF_XREQ(struct startup_req, xreq);
 
        free(sreq->api);
        free(sreq->verb);
        json_object_put(sreq->xreq.json);
+       afb_cred_unref(sreq->xreq.cred);
        sreq->current = sreq->current->next;
        if (sreq->current)
                startup_call_current(sreq);
@@ -493,16 +495,15 @@ static void startup_call_current(struct startup_req *sreq)
                json = strchr(verb, ':');
                if (json) {
                        memset(&sreq->xreq, 0, sizeof sreq->xreq);
+                       afb_xreq_init(&sreq->xreq, &startup_xreq_itf);
                        afb_context_init(&sreq->xreq.context, sreq->session, NULL);
                        sreq->xreq.context.validated = 1;
+                       sreq->xreq.cred = afb_cred_current();
                        sreq->api = strndup(api, verb - api);
-                       sreq->xreq.api = sreq->api;
                        sreq->verb = strndup(verb + 1, json - verb - 1);
+                       sreq->xreq.api = sreq->api;
                        sreq->xreq.verb = sreq->verb;
                        sreq->xreq.json = json_tokener_parse(json + 1);
-                       sreq->xreq.refcount = 1;
-                       sreq->xreq.query = sreq;
-                       sreq->xreq.queryitf = &startup_xreq_itf;
                        if (sreq->api && sreq->verb && sreq->xreq.json) {
                                afb_apis_call(&sreq->xreq);
                                afb_xreq_unref(&sreq->xreq);