diff options
author | dimitri staessens <dimitri.staessens@ugent.be> | 2017-03-29 02:12:40 +0200 |
---|---|---|
committer | dimitri staessens <dimitri.staessens@ugent.be> | 2017-03-29 02:12:40 +0200 |
commit | b09a2719a7820cef58a251ccb2ce286754114a0a (patch) | |
tree | e37cdffce783b846311df03d34df994a946f8597 /src/lib/cdap_req.c | |
parent | b8ad2438385f7c60630d38524ad0c4c13b53b80a (diff) | |
download | ouroboros-b09a2719a7820cef58a251ccb2ce286754114a0a.tar.gz ouroboros-b09a2719a7820cef58a251ccb2ce286754114a0a.zip |
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.
Diffstat (limited to 'src/lib/cdap_req.c')
-rw-r--r-- | src/lib/cdap_req.c | 6 |
1 files changed, 4 insertions, 2 deletions
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 <stdlib.h> #include <assert.h> -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; |