From b09a2719a7820cef58a251ccb2ce286754114a0a Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Wed, 29 Mar 2017 02:12:40 +0200 Subject: lib: Revise handling CDAP messages Fixes a number of issues in CDAP. CDAP keeps track if a message is being processed, and moves it to the end of the request list if it is. It will now correctly wait for new messages. The invoke_ids are generated locally per CDAP instance, invoke_ids can't be used to track incoming requests, we need to keep track of the fd. The keys are now identifiers (taken from the same local pool as the invoke_ids) that are used to track requests. --- src/lib/cdap_req.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/lib/cdap_req.c') diff --git a/src/lib/cdap_req.c b/src/lib/cdap_req.c index b60e73ad..0b77f266 100644 --- a/src/lib/cdap_req.c +++ b/src/lib/cdap_req.c @@ -30,8 +30,9 @@ #include #include -struct cdap_req * cdap_req_create(int fd, - cdap_key_t key) +struct cdap_req * cdap_req_create(int fd, + invoke_id_t iid, + cdap_key_t key) { struct cdap_req * creq = malloc(sizeof(*creq)); pthread_condattr_t cattr; @@ -40,6 +41,7 @@ struct cdap_req * cdap_req_create(int fd, return NULL; creq->fd = fd; + creq->iid = iid; creq->key = key; creq->state = REQ_INIT; creq->response = -1; -- cgit v1.2.3