fixes #118 NN_TCP_NODELAY doesn't cause TCP_NODELAY to be set
diff --git a/src/transports/tcp/atcp.c b/src/transports/tcp/atcp.c
index 60d75ef..2f94331 100644
--- a/src/transports/tcp/atcp.c
+++ b/src/transports/tcp/atcp.c
@@ -23,10 +23,19 @@
 
 #include "atcp.h"
 
+#include "../../tcp.h"
+
 #include "../../utils/err.h"
 #include "../../utils/cont.h"
 #include "../../utils/attr.h"
 
+#if defined NN_HAVE_WINDOWS
+#include "../../utils/win.h"
+#else
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#endif
+
 #define NN_ATCP_STATE_IDLE 1
 #define NN_ATCP_STATE_ACCEPTING 2
 #define NN_ATCP_STATE_ACTIVE 3
@@ -192,6 +201,11 @@
                 nn_assert (sz == sizeof (val));
                 nn_usock_setsockopt (&atcp->usock, SOL_SOCKET, SO_RCVBUF,
                     &val, sizeof (val));
+                sz = sizeof (val);
+                nn_ep_getopt (atcp->ep, NN_TCP, NN_TCP_NODELAY, &val, &sz);
+                nn_assert (sz == sizeof (val));
+                nn_usock_setsockopt (&atcp->usock, IPPROTO_TCP, TCP_NODELAY,
+                    &val, sizeof (val));
 
                 /*  Return ownership of the listening socket to the parent. */
                 nn_usock_swap_owner (atcp->listener, &atcp->listener_owner);
diff --git a/src/transports/tcp/ctcp.c b/src/transports/tcp/ctcp.c
index fc9bc90..b74b5a0 100644
--- a/src/transports/tcp/ctcp.c
+++ b/src/transports/tcp/ctcp.c
@@ -598,6 +598,11 @@
     nn_assert (sz == sizeof (val));
     nn_usock_setsockopt (&self->usock, SOL_SOCKET, SO_RCVBUF,
         &val, sizeof (val));
+    sz = sizeof (val);
+    nn_ep_getopt (self->ep, NN_TCP, NN_TCP_NODELAY, &val, &sz);
+    nn_assert (sz == sizeof (val));
+    nn_usock_setsockopt (&self->usock, IPPROTO_TCP, TCP_NODELAY,
+        &val, sizeof (val));
 
     /*  Bind the socket to the local network interface. */
     rc = nn_usock_bind (&self->usock, (struct sockaddr*) &local, locallen);