diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/cdap.c | 1 | ||||
| -rw-r--r-- | src/lib/cdap_req.c | 13 | ||||
| -rw-r--r-- | src/lib/cdap_req.h | 2 | 
3 files changed, 15 insertions, 1 deletions
| diff --git a/src/lib/cdap.c b/src/lib/cdap.c index 38806c23..b04dcf51 100644 --- a/src/lib/cdap.c +++ b/src/lib/cdap.c @@ -250,6 +250,7 @@ static void cdap_sent_destroy(struct cdap * instance)          list_for_each_safe(p, h, &instance->sent) {                  struct cdap_req * req = list_entry(p, struct cdap_req, next);                  list_del(&req->next); +                cdap_req_cancel(req);                  cdap_req_destroy(req);          } diff --git a/src/lib/cdap_req.c b/src/lib/cdap_req.c index 0b77f266..df748058 100644 --- a/src/lib/cdap_req.c +++ b/src/lib/cdap_req.c @@ -175,3 +175,16 @@ void cdap_req_respond(struct cdap_req * creq,          pthread_mutex_unlock(&creq->lock);  } + + +void cdap_req_cancel(struct cdap_req * creq) +{ +        assert(creq); + +        pthread_mutex_lock(&creq->lock); + +        creq->state = REQ_NULL; +        pthread_cond_broadcast(&creq->cond); + +        pthread_mutex_unlock(&creq->lock); +} diff --git a/src/lib/cdap_req.h b/src/lib/cdap_req.h index 592d26a0..648ebc75 100644 --- a/src/lib/cdap_req.h +++ b/src/lib/cdap_req.h @@ -70,6 +70,6 @@ void              cdap_req_respond(struct cdap_req * creq,                                     int               response,                                     buffer_t          data); -enum creq_state   cdap_req_get_state(struct cdap_req * creq); +void              cdap_req_cancel(struct cdap_req * creq);  #endif /* OUROBOROS_CDAP_REQ_H */ | 
