aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Woltersdorf <jake@playruyi.com>2019-03-12 17:26:39 +0800
committerGarrett D'Amore <garrett@damore.org>2019-03-12 20:01:27 -0700
commitfff28350a84ed60df173ba73f1035db4f7b383bd (patch)
tree4f51223dd91302d8790ba90a4e6c659e89bc9f17
parent6f25aa48a2ff0033073d6ee541748eccc685727d (diff)
downloadnng-fff28350a84ed60df173ba73f1035db4f7b383bd.tar.gz
nng-fff28350a84ed60df173ba73f1035db4f7b383bd.tar.bz2
nng-fff28350a84ed60df173ba73f1035db4f7b383bd.zip
nng_msg_dup correctly duplicates pipe (mentioned in #862)
-rw-r--r--src/core/message.c1
-rw-r--r--tests/message.c10
2 files changed, 11 insertions, 0 deletions
diff --git a/src/core/message.c b/src/core/message.c
index 41f42234..a054ac9e 100644
--- a/src/core/message.c
+++ b/src/core/message.c
@@ -469,6 +469,7 @@ nni_msg_dup(nni_msg **dup, const nni_msg *src)
memcpy(newmo->mo_val, mo->mo_val, mo->mo_sz);
nni_list_append(&m->m_options, newmo);
}
+ m->m_pipe = src->m_pipe;
*dup = m;
return (0);
diff --git a/tests/message.c b/tests/message.c
index 4c0af912..cc50f542 100644
--- a/tests/message.c
+++ b/tests/message.c
@@ -186,6 +186,16 @@ TestMain("Message Tests", {
So(strcmp(nng_msg_body(m2), "back2basics") == 0);
});
+ Convey("Message dup copies pipe", {
+ nng_pipe p = NNG_PIPE_INITIALIZER;
+ nng_msg *m2;
+ memset(&p, 0x22, sizeof(p));
+ nng_msg_set_pipe(msg, p);
+ So(nng_msg_dup(&m2, msg) == 0);
+ p = nng_msg_get_pipe(m2);
+ So(nng_pipe_id(p) == 0x22222222);
+ });
+
Convey("Missing option fails properly", {
char buf[128];
size_t sz = sizeof(buf);