- 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->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 = ENOTSUP;
+ }