aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-01-01 22:12:07 -0800
committerGarrett D'Amore <garrett@damore.org>2018-01-01 22:12:07 -0800
commit1e945e873d3bd791354dec504e42025502c6042f (patch)
tree8c7aafedabd36bb0ecb65da68acf8818aba78aa1 /src
parent7e83c78ad2c98a7c32a1b9557deaa13723e75b02 (diff)
downloadnng-1e945e873d3bd791354dec504e42025502c6042f.tar.gz
nng-1e945e873d3bd791354dec504e42025502c6042f.tar.bz2
nng-1e945e873d3bd791354dec504e42025502c6042f.zip
Fix HTTP sconn race, and compile bugs introduced.
Diffstat (limited to 'src')
-rw-r--r--src/nng.h2
-rw-r--r--src/supplemental/http/http.c7
-rw-r--r--src/supplemental/tls/mbedtls/tls.c2
-rw-r--r--src/transport/tls/tls.c6
-rw-r--r--src/transport/ws/websocket.c6
5 files changed, 12 insertions, 11 deletions
diff --git a/src/nng.h b/src/nng.h
index 31b56729..05e99771 100644
--- a/src/nng.h
+++ b/src/nng.h
@@ -601,7 +601,7 @@ typedef enum nng_tls_auth_mode {
// nng_tls_config_alloc creates a TLS configuration using
// reasonable defaults. This configuration can be shared
// with multiple pipes or services/servers.
-NNG_DECL int nng_tls_config_init(nng_tls_config **, nng_tls_mode);
+NNG_DECL int nng_tls_config_alloc(nng_tls_config **, nng_tls_mode);
// nng_tls_config_free drops the reference count on the TLS
// configuration object, and if zero, deallocates it.
diff --git a/src/supplemental/http/http.c b/src/supplemental/http/http.c
index df5c7588..723b3e55 100644
--- a/src/supplemental/http/http.c
+++ b/src/supplemental/http/http.c
@@ -429,11 +429,12 @@ http_wr_cancel(nni_aio *aio, int rv)
nni_mtx_lock(&http->mtx);
if (nni_aio_list_active(aio)) {
- nni_aio_list_remove(aio);
if (aio == nni_list_first(&http->wrq)) {
- http_close(http);
+ nni_aio_cancel(http->wr_aio, NNG_ECANCELED);
+ } else {
+ nni_aio_list_remove(aio);
+ nni_aio_finish_error(aio, rv);
}
- nni_aio_finish_error(aio, rv);
}
nni_mtx_unlock(&http->mtx);
}
diff --git a/src/supplemental/tls/mbedtls/tls.c b/src/supplemental/tls/mbedtls/tls.c
index 5c92d7d9..742265f1 100644
--- a/src/supplemental/tls/mbedtls/tls.c
+++ b/src/supplemental/tls/mbedtls/tls.c
@@ -1072,7 +1072,7 @@ nng_tls_config_alloc(nng_tls_config **cfgp, nng_tls_mode mode)
return (nni_tls_config_init(cfgp, mode));
}
-int
+void
nng_tls_config_free(nng_tls_config *cfg)
{
nni_tls_config_fini(cfg);
diff --git a/src/transport/tls/tls.c b/src/transport/tls/tls.c
index f2ca6d35..1104d4b2 100644
--- a/src/transport/tls/tls.c
+++ b/src/transport/tls/tls.c
@@ -589,7 +589,7 @@ nni_tls_ep_fini(void *arg)
nni_plat_tcp_ep_fini(ep->tep);
}
if (ep->cfg) {
- nng_tls_config_fini(ep->cfg);
+ nni_tls_config_fini(ep->cfg);
}
nni_aio_fini(ep->aio);
nni_mtx_fini(&ep->mtx);
@@ -684,7 +684,7 @@ nni_tls_ep_init(void **epp, const char *url, nni_sock *sock, int mode)
}
if (((rv = nni_plat_tcp_ep_init(&ep->tep, &lsa, &rsa, mode)) != 0) ||
- ((rv = nng_tls_config_init(&ep->cfg, tlsmode)) != 0) ||
+ ((rv = nni_tls_config_init(&ep->cfg, tlsmode)) != 0) ||
((rv = nng_tls_config_auth_mode(ep->cfg, authmode)) != 0) ||
((rv = nni_aio_init(&ep->aio, nni_tls_ep_cb, ep)) != 0)) {
nni_strfree(rhost);
@@ -887,7 +887,7 @@ tls_setopt_config(void *arg, const void *data, size_t sz)
nni_tls_config_hold(cfg);
ep->cfg = cfg;
if (old != NULL) {
- nng_tls_config_fini(old);
+ nni_tls_config_fini(old);
}
return (0);
}
diff --git a/src/transport/ws/websocket.c b/src/transport/ws/websocket.c
index 1162338e..5a5a4b00 100644
--- a/src/transport/ws/websocket.c
+++ b/src/transport/ws/websocket.c
@@ -603,7 +603,7 @@ ws_ep_fini(void *arg)
nni_mtx_fini(&ep->mtx);
#ifdef NNG_TRANSPORT_WSS
if (ep->tls) {
- nng_tls_config_fini(ep->tls);
+ nni_tls_config_fini(ep->tls);
}
#endif
NNI_FREE_STRUCT(ep);
@@ -706,7 +706,7 @@ ws_ep_init(void **epp, const char *url, nni_sock *sock, int mode)
#ifdef NNG_TRANSPORT_WSS
if (strncmp(url, "wss://", 4) == 0) {
- rv = nng_tls_config_init(&ep->tls,
+ rv = nni_tls_config_init(&ep->tls,
mode == NNI_EP_MODE_DIAL ? NNG_TLS_MODE_CLIENT
: NNG_TLS_MODE_SERVER);
if (rv != 0) {
@@ -817,7 +817,7 @@ wss_ep_setopt_tlsconfig(void *arg, const void *v, size_t sz)
}
if (rv == 0) {
if (ep->tls != NULL) {
- nng_tls_config_fini(ep->tls);
+ nni_tls_config_fini(ep->tls);
}
nni_tls_config_hold(cfg);
ep->tls = cfg;