aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/survey0
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol/survey0')
-rw-r--r--src/protocol/survey0/respond.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/protocol/survey0/respond.c b/src/protocol/survey0/respond.c
index caecf719..bb457bdb 100644
--- a/src/protocol/survey0/respond.c
+++ b/src/protocol/survey0/respond.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -123,7 +123,7 @@ resp0_ctx_init(void **ctxp, void *sarg)
return (NNG_ENOMEM);
}
NNI_LIST_NODE_INIT(&ctx->sqnode);
- // XXX: NNI_LIST_NODE_INIT(&ctx->rqnode);
+ NNI_LIST_NODE_INIT(&ctx->rqnode);
ctx->btrace_len = 0;
ctx->sock = s;
ctx->pipe_id = 0;
@@ -472,6 +472,13 @@ resp0_ctx_recv(void *arg, nni_aio *aio)
nni_aio_finish_error(aio, rv);
return;
}
+ // We cannot have two concurrent receive requests on the same
+ // context...
+ if (ctx->raio != NULL) {
+ nni_mtx_unlock(&s->mtx);
+ nni_aio_finish_error(aio, NNG_ESTATE);
+ return;
+ }
ctx->raio = aio;
nni_list_append(&s->recvq, ctx);
nni_mtx_unlock(&s->mtx);