Introduce afb_request
[src/app-framework-binder.git] / src / afb-hreq.c
index 62b322c..db804eb 100644 (file)
@@ -33,7 +33,6 @@
 #endif
 
 #include "afb-method.h"
-#include <afb/afb-req-itf.h>
 #include "afb-msg-json.h"
 #include "afb-context.h"
 #include "afb-hreq.h"
@@ -325,12 +324,14 @@ static void req_destroy(struct afb_xreq *xreq)
 
 void afb_hreq_addref(struct afb_hreq *hreq)
 {
-       afb_xreq_addref(&hreq->xreq);
+       afb_xreq_unhooked_addref(&hreq->xreq);
 }
 
 void afb_hreq_unref(struct afb_hreq *hreq)
 {
-       afb_xreq_unref(&hreq->xreq);
+       if (hreq->replied)
+               hreq->xreq.replied = 1;
+       afb_xreq_unhooked_unref(&hreq->xreq);
 }
 
 /*
@@ -921,7 +922,7 @@ void afb_hreq_call(struct afb_hreq *hreq, struct afb_apiset *apiset, const char
        } else if (afb_hreq_init_context(hreq) < 0) {
                afb_hreq_reply_error(hreq, MHD_HTTP_INTERNAL_SERVER_ERROR);
        } else {
-               afb_xreq_addref(&hreq->xreq); /* TODO check if needed */
+               afb_xreq_unhooked_addref(&hreq->xreq);
                afb_xreq_process(&hreq->xreq, apiset);
        }
 }
@@ -982,7 +983,6 @@ struct afb_hreq *afb_hreq_create()
        if (hreq) {
                /* init the request */
                afb_xreq_init(&hreq->xreq, &afb_hreq_xreq_query_itf);
-               hreq->xreq.cred = afb_cred_current();
                hreq->reqid = ++global_reqids;
        }
        return hreq;