Move tokens from sessions to requests
[src/app-framework-binder.git] / src / afb-xreq.c
index 8cc22c3..8542741 100644 (file)
@@ -202,12 +202,15 @@ static int xreq_legacy_subscribe_event_x1_cb(struct afb_req_x2 *closure, struct
 
 int afb_xreq_subscribe(struct afb_xreq *xreq, struct afb_event_x2 *event)
 {
-       if (xreq->listener)
-               return afb_evt_event_x2_add_watch(xreq->listener, event);
-       if (xreq->queryitf->subscribe)
-               return xreq->queryitf->subscribe(xreq, event);
-       ERROR("no event listener, subscription impossible");
-       errno = EINVAL;
+       if (xreq->replied) {
+               ERROR("request replied, subscription impossible");
+               errno = EINVAL;
+       } else {
+               if (xreq->queryitf->subscribe)
+                       return xreq->queryitf->subscribe(xreq, event);
+               ERROR("no event listener, subscription impossible");
+               errno = ENOTSUP;
+       }
        return -1;
 }
 
@@ -224,12 +227,15 @@ static int xreq_legacy_unsubscribe_event_x1_cb(struct afb_req_x2 *closure, struc
 
 int afb_xreq_unsubscribe(struct afb_xreq *xreq, struct afb_event_x2 *event)
 {
-       if (xreq->listener)
-               return afb_evt_event_x2_remove_watch(xreq->listener, event);
-       if (xreq->queryitf->unsubscribe)
-               return xreq->queryitf->unsubscribe(xreq, event);
-       ERROR("no event listener, unsubscription impossible");
-       errno = EINVAL;
+       if (xreq->replied) {
+               ERROR("request replied, unsubscription impossible");
+               errno = EINVAL;
+       } else {
+               if (xreq->queryitf->unsubscribe)
+                       return xreq->queryitf->unsubscribe(xreq, event);
+               ERROR("no event listener, unsubscription impossible");
+               errno = ENOTSUP;
+       }
        return -1;
 }
 
@@ -754,9 +760,6 @@ static int xreq_session_check_apply_v1(struct afb_xreq *xreq, int sessionflags)
                }
        }
 
-       if ((sessionflags & AFB_SESSION_RENEW_X1) != 0) {
-               afb_context_refresh(&xreq->context);
-       }
        if ((sessionflags & AFB_SESSION_CLOSE_X1) != 0) {
                afb_context_change_loa(&xreq->context, 0);
                afb_context_close(&xreq->context);
@@ -792,9 +795,6 @@ static int xreq_session_check_apply_v2(struct afb_xreq *xreq, uint32_t sessionfl
                return -1;
        }
 
-       if ((sessionflags & AFB_SESSION_REFRESH_X2) != 0) {
-               afb_context_refresh(&xreq->context);
-       }
        if ((sessionflags & AFB_SESSION_CLOSE_X2) != 0) {
                afb_context_close(&xreq->context);
        }