diff options
author | Paul Colomiets <paul@colomiets.name> | 2013-09-25 10:52:18 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2013-09-25 10:52:18 +0200 |
commit | 6610c55d11b64a387aa5d1763b4ca6f3770a7481 (patch) | |
tree | 05e1758862359ddae3a6e3d4b57388478d898533 /tests/msg.c | |
parent | be80e3578ec7eda2bcfa07a4a92f9f359baf4436 (diff) | |
download | nanomsg-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.c | 27 |
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; } |