summaryrefslogtreecommitdiff
path: root/tests/msg.c
diff options
context:
space:
mode:
authorPaul Colomiets <paul@colomiets.name>2013-09-25 10:52:18 +0200
committerMartin Sustrik <sustrik@250bpm.com>2013-09-25 10:52:18 +0200
commit6610c55d11b64a387aa5d1763b4ca6f3770a7481 (patch)
tree05e1758862359ddae3a6e3d4b57388478d898533 /tests/msg.c
parentbe80e3578ec7eda2bcfa07a4a92f9f359baf4436 (diff)
downloadnanomsg-6610c55d11b64a387aa5d1763b4ca6f3770a7481.tar.gz
Fix data corruption on big messages (fixes #144)
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
Diffstat (limited to 'tests/msg.c')
-rw-r--r--tests/msg.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/msg.c b/tests/msg.c
index 5b7fb15..437166f 100644
--- a/tests/msg.c
+++ b/tests/msg.c
@@ -28,6 +28,9 @@
#include <string.h>
#define SOCKET_ADDRESS "inproc://a"
+#define SOCKET_ADDRESS_TCP "tcp://127.0.0.1:5557"
+
+char longdata[1 << 20];
int main ()
{
@@ -93,6 +96,30 @@ int main ()
test_close (sc);
test_close (sb);
+ /* Test receiving of large message */
+
+ sb = test_socket (AF_SP, NN_PAIR);
+ test_bind (sb, SOCKET_ADDRESS_TCP);
+ sc = test_socket (AF_SP, NN_PAIR);
+ test_connect (sc, SOCKET_ADDRESS_TCP);
+
+ for (i = 0; i < sizeof (longdata); ++i)
+ longdata[i] = '0' + (i % 10);
+ longdata [sizeof (longdata) - 1] = 0;
+ test_send (sb, longdata);
+
+ rc = nn_recv (sc, &buf2, NN_MSG, 0);
+ errno_assert (rc >= 0);
+ nn_assert (rc == sizeof (longdata) - 1);
+ nn_assert (buf2);
+ for (i = 0; i < sizeof (longdata) - 1; ++i)
+ nn_assert (buf2 [i] == longdata [i]);
+ rc = nn_freemsg (buf2);
+ errno_assert (rc == 0);
+
+ test_close (sc);
+ test_close (sb);
+
return 0;
}