+const char *afb_xreq_raw(struct afb_xreq *xreq, size_t *size)
+{
+ struct json_object *obj = xreq_json_cb(xreq);
+ const char *result = json_object_to_json_string(obj);
+ if (size != NULL)
+ *size = strlen(result);
+ return result;
+}
+
+void afb_xreq_addref(struct afb_xreq *xreq)
+{
+ afb_req_addref(to_req(xreq));
+}
+
+void afb_xreq_unref(struct afb_xreq *xreq)
+{
+ afb_req_unref(to_req(xreq));
+}
+
+void afb_xreq_unhooked_subcall(struct afb_xreq *xreq, const char *api, const char *verb, struct json_object *args, void (*callback)(void*, int, struct json_object*), void *cb_closure)
+{
+ xreq_subcall_cb(xreq, api, verb, args, callback, cb_closure);
+}
+
+void afb_xreq_subcall(struct afb_xreq *xreq, const char *api, const char *verb, struct json_object *args, void (*callback)(void*, int, struct json_object*), void *cb_closure)
+{
+ afb_req_subcall(to_req(xreq), api, verb, args, callback, cb_closure);
+}
+
+int afb_xreq_unhooked_subcall_sync(struct afb_xreq *xreq, const char *api, const char *verb, struct json_object *args, struct json_object **result)
+{
+ return xreq_subcallsync_cb(xreq, api, verb, args, result);
+}
+
+int afb_xreq_subcall_sync(struct afb_xreq *xreq, const char *api, const char *verb, struct json_object *args, struct json_object **result)
+{
+ return afb_req_subcall_sync(to_req(xreq), api, verb, args, result);
+}
+
+static int xreq_session_check_apply_v1(struct afb_xreq *xreq, int sessionflags)