aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/survey0
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2019-02-17 10:17:26 -0800
committerGarrett D'Amore <garrett@damore.org>2019-02-17 10:17:26 -0800
commit8ac664fdbab302c9e8cd16a1d45ace5bd00046e5 (patch)
tree060f462549182d1b56c8868b70d238989764491b /src/protocol/survey0
parent60231f0600461a9593a8f876518874866df3387a (diff)
downloadnng-8ac664fdbab302c9e8cd16a1d45ace5bd00046e5.tar.gz
nng-8ac664fdbab302c9e8cd16a1d45ace5bd00046e5.tar.bz2
nng-8ac664fdbab302c9e8cd16a1d45ace5bd00046e5.zip
fixes #871 panic when sharing rep between threads
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);