aboutsummaryrefslogtreecommitdiff
path: root/src/core/transport.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-12-29 14:21:20 -0800
committerGarrett D'Amore <garrett@damore.org>2017-12-30 19:05:41 -0800
commit6a50035b242b972c1d9b659ba63e037a0a8afe71 (patch)
treefe2600235a01e72d1e7bd5fad1d5e2ea62aada2e /src/core/transport.c
parenta0364185784895c4bc748a6e6453a132d618c96c (diff)
downloadnng-6a50035b242b972c1d9b659ba63e037a0a8afe71.tar.gz
nng-6a50035b242b972c1d9b659ba63e037a0a8afe71.tar.bz2
nng-6a50035b242b972c1d9b659ba63e037a0a8afe71.zip
fixes #166 Websocket TLS mapping
This introduces the wss:// scheme, which is available and works like the ws:// scheme if TLS is enabled in the library. The library modularization is refactored somewhat, to make it easier to use. There is now a single NNG_ENABLE_TLS that enables TLS support under the hood. This also adds a new option for the TLS transport, NNG_OPT_TLS_CONFIG (and a similar one for WSS, NNG_OPT_TLS_WSS_CONFIG) that offer access to the underlying TLS configuration object, which now has a public API to go with it as well. Note that it is also possible to use pure HTTPS using the *private* API, which will be exposed in a public form soon.
Diffstat (limited to 'src/core/transport.c')
-rw-r--r--src/core/transport.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/core/transport.c b/src/core/transport.c
index 31da773f..9c129a72 100644
--- a/src/core/transport.c
+++ b/src/core/transport.c
@@ -56,12 +56,12 @@ nni_tran_register(const nni_tran *tran)
nni_mtx_lock(&nni_tran_lk);
// Check to see if the transport is already registered...
NNI_LIST_FOREACH (&nni_tran_list, t) {
- if (tran->tran_init == t->t_tran.tran_init) {
- nni_mtx_unlock(&nni_tran_lk);
- // Same transport, duplicate registration.
- return (0);
- }
if (strcmp(tran->tran_scheme, t->t_tran.tran_scheme) == 0) {
+ if (tran->tran_init == t->t_tran.tran_init) {
+ // duplicate.
+ nni_mtx_unlock(&nni_tran_lk);
+ return (0);
+ }
nni_mtx_unlock(&nni_tran_lk);
return (NNG_ESTATE);
}
@@ -208,25 +208,30 @@ nni_tran_chkopt(const char *name, const void *v, size_t sz)
typedef int (*nni_tran_ctor)(void);
+// These are just the statically compiled in constructors.
+// In the future we might want to support dynamic additions.
static nni_tran_ctor nni_tran_ctors[] = {
-#ifdef NNG_HAVE_INPROC
+#ifdef NNG_TRANSPORT_INPROC
nng_inproc_register,
#endif
-#ifdef NNG_HAVE_IPC
+#ifdef NNG_TRANSPORT_IPC
nng_ipc_register,
#endif
-#ifdef NNG_HAVE_TCP
+#ifdef NNG_TRANSPORT_TCP
nng_tcp_register,
#endif
-#ifdef NNG_HAVE_TLS
+#ifdef NNG_TRANSPORT_TLS
nng_tls_register,
#endif
-#ifdef NNG_HAVE_ZEROTIER
- nng_zt_register,
-#endif
-#ifdef NNG_HAVE_WEBSOCKET
+#ifdef NNG_TRANSPORT_WS
nng_ws_register,
#endif
+#ifdef NNG_TRANSPORT_WSS
+ nng_wss_register,
+#endif
+#ifdef NNG_TRANSPORT_ZEROTIER
+ nng_zt_register,
+#endif
NULL,
};