summaryrefslogtreecommitdiff
path: root/src/lib/cdap_req.c
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2017-03-29 02:12:40 +0200
committerdimitri staessens <[email protected]>2017-03-29 02:12:40 +0200
commitb09a2719a7820cef58a251ccb2ce286754114a0a (patch)
treee37cdffce783b846311df03d34df994a946f8597 /src/lib/cdap_req.c
parentb8ad2438385f7c60630d38524ad0c4c13b53b80a (diff)
downloadouroboros-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.c6
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;