#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"
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));
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);
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);