Partial tcpmux support on Windows
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee64717..f46fc56 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -71,6 +71,7 @@
add_libnanomsg_test (tcp)
add_libnanomsg_test (tcp_shutdown)
add_libnanomsg_test (ws)
+add_libnanomsg_test (tcpmux)
# Protocol tests.
add_libnanomsg_test (pair)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 92a56f1..ad23565 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -139,6 +139,7 @@
devices/device.h
devices/device.c
+ devices/tcpmuxd.c
protocols/utils/dist.h
protocols/utils/dist.c
@@ -255,6 +256,17 @@
transports/tcp/tcp.h
transports/tcp/tcp.c
+ transports/tcpmux/atcpmux.h
+ transports/tcpmux/atcpmux.c
+ transports/tcpmux/btcpmux.h
+ transports/tcpmux/btcpmux.c
+ transports/tcpmux/ctcpmux.h
+ transports/tcpmux/ctcpmux.c
+ transports/tcpmux/stcpmux.h
+ transports/tcpmux/stcpmux.c
+ transports/tcpmux/tcpmux.h
+ transports/tcpmux/tcpmux.c
+
transports/ws/aws.h
transports/ws/aws.c
transports/ws/bws.h
diff --git a/src/devices/tcpmuxd.c b/src/devices/tcpmuxd.c
index a9ce07b..05bd8d3 100644
--- a/src/devices/tcpmuxd.c
+++ b/src/devices/tcpmuxd.c
@@ -22,6 +22,18 @@
#include "../nn.h"
+#if defined NN_HAVE_WINDOWS
+
+#include "../utils/err.h"
+
+int nn_tcpmuxd (int port)
+{
+ errno = EPROTONOSUPPORT;
+ return -1;
+}
+
+#else
+
#include "../utils/thread.h"
#include "../utils/attr.h"
#include "../utils/err.h"
@@ -292,3 +304,4 @@
return 0;
}
+#endif
diff --git a/src/transports/tcpmux/atcpmux.c b/src/transports/tcpmux/atcpmux.c
index e955dea..0d061f2 100644
--- a/src/transports/tcpmux/atcpmux.c
+++ b/src/transports/tcpmux/atcpmux.c
@@ -129,8 +129,6 @@
NN_UNUSED void *srcptr)
{
struct nn_atcpmux *atcpmux;
- int val;
- size_t sz;
atcpmux = nn_cont (self, struct nn_atcpmux, fsm);
diff --git a/src/transports/tcpmux/btcpmux.c b/src/transports/tcpmux/btcpmux.c
index 71f8082..f91c654 100644
--- a/src/transports/tcpmux/btcpmux.c
+++ b/src/transports/tcpmux/btcpmux.c
@@ -122,10 +122,6 @@
const char *colon;
const char *slash;
const char *end;
- struct sockaddr_storage ss;
- size_t sslen;
- int ipv4only;
- size_t ipv4onlylen;
int reconnect_ivl;
int reconnect_ivl_max;
size_t sz;
@@ -481,8 +477,6 @@
struct sockaddr_storage ss;
struct sockaddr_un *un;
const char *addr;
- int val;
- size_t sz;
const char *colon;
const char *slash;
int port;
diff --git a/src/transports/tcpmux/tcpmux.c b/src/transports/tcpmux/tcpmux.c
index eba42f6..da222b9 100644
--- a/src/transports/tcpmux/tcpmux.c
+++ b/src/transports/tcpmux/tcpmux.c
@@ -82,7 +82,11 @@
static int nn_tcpmux_bind (void *hint, struct nn_epbase **epbase)
{
+#if defined NN_HAVE_WINDOWS
+ return -EPROTONOSUPPORT;
+#else
return nn_btcpmux_create (hint, epbase);
+#endif
}
static int nn_tcpmux_connect (void *hint, struct nn_epbase **epbase)
diff --git a/tests/tcpmux.c b/tests/tcpmux.c
index 46467f0..a1a33fa 100644
--- a/tests/tcpmux.c
+++ b/tests/tcpmux.c
@@ -32,6 +32,7 @@
int main ()
{
+#if !defined NN_HAVE_WINDOWS
int rc;
int sb;
int sc;
@@ -56,6 +57,7 @@
/* Cleanup. */
test_close (sc);
test_close (sb);
+#endif
return 0;
}