aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-04-23 10:38:20 -0700
committerGarrett D'Amore <garrett@damore.org>2018-04-24 15:00:06 -0700
commite0b47b12d3d1462d07c5038e4f34f5282eeec675 (patch)
tree78869d838ec0792dba664a9dd5ce325608a45eca /src
parentea741e0285e70e2ca417fbd2c874bb990bdbf833 (diff)
downloadnng-e0b47b12d3d1462d07c5038e4f34f5282eeec675.tar.gz
nng-e0b47b12d3d1462d07c5038e4f34f5282eeec675.tar.bz2
nng-e0b47b12d3d1462d07c5038e4f34f5282eeec675.zip
fixes #368 context options could be empty
Diffstat (limited to 'src')
-rw-r--r--src/core/socket.c11
-rw-r--r--src/protocol/reqrep0/rep.c16
2 files changed, 8 insertions, 19 deletions
diff --git a/src/core/socket.c b/src/core/socket.c
index 5c28dbbb..8a14beb5 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -1273,15 +1273,14 @@ nni_ctx_getopt(nni_ctx *ctx, const char *opt, void *v, size_t *szp, int typ)
{
nni_sock * sock = ctx->c_sock;
nni_proto_ctx_option *co;
- int rv;
+ int rv = NNG_ENOTSUP;
nni_mtx_lock(&sock->s_mx);
if (strcmp(opt, NNG_OPT_RECVTIMEO) == 0) {
rv = nni_copyout_ms(ctx->c_rcvtimeo, v, szp, typ);
} else if (strcmp(opt, NNG_OPT_SENDTIMEO) == 0) {
rv = nni_copyout_ms(ctx->c_sndtimeo, v, szp, typ);
- } else {
- rv = NNG_ENOTSUP;
+ } else if (ctx->c_ops.ctx_options != NULL) {
for (co = ctx->c_ops.ctx_options; co->co_name != NULL; co++) {
if (strcmp(opt, co->co_name) != 0) {
continue;
@@ -1294,7 +1293,6 @@ nni_ctx_getopt(nni_ctx *ctx, const char *opt, void *v, size_t *szp, int typ)
break;
}
}
-
nni_mtx_unlock(&sock->s_mx);
return (rv);
}
@@ -1305,15 +1303,14 @@ nni_ctx_setopt(
{
nni_sock * sock = ctx->c_sock;
nni_proto_ctx_option *co;
- int rv;
+ int rv = NNG_ENOTSUP;
nni_mtx_lock(&sock->s_mx);
if (strcmp(opt, NNG_OPT_RECVTIMEO) == 0) {
rv = nni_copyin_ms(&ctx->c_rcvtimeo, v, sz, typ);
} else if (strcmp(opt, NNG_OPT_SENDTIMEO) == 0) {
rv = nni_copyin_ms(&ctx->c_sndtimeo, v, sz, typ);
- } else {
- rv = NNG_ENOTSUP;
+ } else if (ctx->c_ops.ctx_options != NULL) {
for (co = ctx->c_ops.ctx_options; co->co_name != NULL; co++) {
if (strcmp(opt, co->co_name) != 0) {
continue;
diff --git a/src/protocol/reqrep0/rep.c b/src/protocol/reqrep0/rep.c
index afc52629..4e20466b 100644
--- a/src/protocol/reqrep0/rep.c
+++ b/src/protocol/reqrep0/rep.c
@@ -667,19 +667,11 @@ static nni_proto_pipe_ops rep0_pipe_ops = {
.pipe_stop = rep0_pipe_stop,
};
-static nni_proto_ctx_option rep0_ctx_options[] = {
- // terminate list
- {
- .co_name = NULL,
- },
-};
-
static nni_proto_ctx_ops rep0_ctx_ops = {
- .ctx_init = rep0_ctx_init,
- .ctx_fini = rep0_ctx_fini,
- .ctx_send = rep0_ctx_send,
- .ctx_recv = rep0_ctx_recv,
- .ctx_options = rep0_ctx_options,
+ .ctx_init = rep0_ctx_init,
+ .ctx_fini = rep0_ctx_fini,
+ .ctx_send = rep0_ctx_send,
+ .ctx_recv = rep0_ctx_recv,
};
static nni_proto_sock_option rep0_sock_options[] = {