aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/platform/windows/win_impl.h5
-rw-r--r--src/platform/windows/win_io.c21
-rw-r--r--src/platform/windows/win_ipcconn.c11
-rw-r--r--src/platform/windows/win_ipclisten.c17
-rw-r--r--src/platform/windows/win_tcpconn.c10
-rw-r--r--src/platform/windows/win_tcpdial.c5
-rw-r--r--src/platform/windows/win_tcplisten.c20
-rw-r--r--src/platform/windows/win_udp.c20
8 files changed, 39 insertions, 70 deletions
diff --git a/src/platform/windows/win_impl.h b/src/platform/windows/win_impl.h
index 7842bdb4..1354709b 100644
--- a/src/platform/windows/win_impl.h
+++ b/src/platform/windows/win_impl.h
@@ -1,5 +1,5 @@
//
-// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -122,8 +122,7 @@ extern void nni_win_udp_sysfini(void);
extern int nni_win_resolv_sysinit(void);
extern void nni_win_resolv_sysfini(void);
-extern int nni_win_io_init(nni_win_io *, nni_win_io_cb, void *);
-extern void nni_win_io_fini(nni_win_io *);
+extern void nni_win_io_init(nni_win_io *, nni_win_io_cb, void *);
extern int nni_win_io_register(HANDLE);
diff --git a/src/platform/windows/win_io.c b/src/platform/windows/win_io.c
index 1e985130..47dd7408 100644
--- a/src/platform/windows/win_io.c
+++ b/src/platform/windows/win_io.c
@@ -60,27 +60,14 @@ nni_win_io_register(HANDLE h)
return (0);
}
-int
+void
nni_win_io_init(nni_win_io *io, nni_win_io_cb cb, void *ptr)
{
ZeroMemory(&io->olpd, sizeof(io->olpd));
- io->cb = cb;
- io->ptr = ptr;
- io->aio = NULL;
- io->olpd.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
- if (io->olpd.hEvent == NULL) {
- return (nni_win_error(GetLastError()));
- }
- return (0);
-}
-
-void
-nni_win_io_fini(nni_win_io *io)
-{
- if (io->olpd.hEvent != NULL) {
- CloseHandle((HANDLE) io->olpd.hEvent);
- }
+ io->cb = cb;
+ io->ptr = ptr;
+ io->aio = NULL;
}
int
diff --git a/src/platform/windows/win_ipcconn.c b/src/platform/windows/win_ipcconn.c
index 3c005398..269eff8d 100644
--- a/src/platform/windows/win_ipcconn.c
+++ b/src/platform/windows/win_ipcconn.c
@@ -316,9 +316,6 @@ ipc_conn_reap(void *arg)
}
nni_mtx_unlock(&c->mtx);
- nni_win_io_fini(&c->recv_io);
- nni_win_io_fini(&c->send_io);
-
if (c->f != INVALID_HANDLE_VALUE) {
CloseHandle(c->f);
}
@@ -401,7 +398,6 @@ nni_win_ipc_init(
nng_stream **connp, HANDLE p, const nng_sockaddr *sa, bool dialer)
{
ipc_conn *c;
- int rv;
if ((c = NNI_ALLOC_STRUCT(c)) == NULL) {
return (NNG_ENOMEM);
@@ -420,11 +416,8 @@ nni_win_ipc_init(
c->stream.s_get = ipc_get;
c->stream.s_set = ipc_set;
- if (((rv = nni_win_io_init(&c->recv_io, ipc_recv_cb, c)) != 0) ||
- ((rv = nni_win_io_init(&c->send_io, ipc_send_cb, c)) != 0)) {
- ipc_free(c);
- return (rv);
- }
+ nni_win_io_init(&c->recv_io, ipc_recv_cb, c);
+ nni_win_io_init(&c->send_io, ipc_send_cb, c);
c->f = p;
*connp = (void *) c;
diff --git a/src/platform/windows/win_ipclisten.c b/src/platform/windows/win_ipclisten.c
index 07969e97..89fe7268 100644
--- a/src/platform/windows/win_ipclisten.c
+++ b/src/platform/windows/win_ipclisten.c
@@ -1,5 +1,5 @@
//
-// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2019 Devolutions <info@devolutions.net>
//
@@ -17,7 +17,7 @@
typedef struct {
nng_stream_listener sl;
- char * path;
+ char *path;
bool started;
bool closed;
HANDLE f;
@@ -33,7 +33,7 @@ typedef struct {
static void
ipc_accept_done(ipc_listener *l, int rv)
{
- nni_aio * aio;
+ nni_aio *aio;
HANDLE f;
nng_stream *c;
@@ -138,7 +138,7 @@ static int
ipc_listener_set_sec_desc(void *arg, const void *buf, size_t sz, nni_type t)
{
ipc_listener *l = arg;
- void * desc;
+ void *desc;
int rv;
if ((rv = nni_copyin_ptr(&desc, buf, sz, t)) != 0) {
@@ -200,7 +200,7 @@ ipc_listener_listen(void *arg)
ipc_listener *l = arg;
int rv;
HANDLE f;
- char * path;
+ char *path;
nni_mtx_lock(&l->mtx);
if (l->started) {
@@ -310,7 +310,6 @@ ipc_listener_free(void *arg)
nni_cv_wait(&l->cv);
}
nni_mtx_unlock(&l->mtx);
- nni_win_io_fini(&l->io);
nni_strfree(l->path);
nni_cv_fini(&l->cv);
nni_mtx_fini(&l->mtx);
@@ -321,7 +320,6 @@ int
nni_ipc_listener_alloc(nng_stream_listener **lp, const nng_url *url)
{
ipc_listener *l;
- int rv;
if ((strcmp(url->u_scheme, "ipc") != 0) || (url->u_path == NULL) ||
(strlen(url->u_path) == 0) ||
@@ -331,10 +329,7 @@ nni_ipc_listener_alloc(nng_stream_listener **lp, const nng_url *url)
if ((l = NNI_ALLOC_STRUCT(l)) == NULL) {
return (NNG_ENOMEM);
}
- if ((rv = nni_win_io_init(&l->io, ipc_accept_cb, l)) != 0) {
- NNI_FREE_STRUCT(l);
- return (rv);
- }
+ nni_win_io_init(&l->io, ipc_accept_cb, l);
l->started = false;
l->closed = false;
l->sec_attr.nLength = sizeof(l->sec_attr);
diff --git a/src/platform/windows/win_tcpconn.c b/src/platform/windows/win_tcpconn.c
index fad7c495..2a2106a1 100644
--- a/src/platform/windows/win_tcpconn.c
+++ b/src/platform/windows/win_tcpconn.c
@@ -409,10 +409,6 @@ tcp_free(void *arg)
}
nni_mtx_unlock(&c->mtx);
- nni_win_io_fini(&c->recv_io);
- nni_win_io_fini(&c->send_io);
- nni_win_io_fini(&c->conn_io);
-
if (c->s != INVALID_SOCKET) {
closesocket(c->s);
}
@@ -448,9 +444,9 @@ nni_win_tcp_init(nni_tcp_conn **connp, SOCKET s)
c->ops.s_get = tcp_get;
c->ops.s_set = tcp_set;
- if (((rv = nni_win_io_init(&c->recv_io, tcp_recv_cb, c)) != 0) ||
- ((rv = nni_win_io_init(&c->send_io, tcp_send_cb, c)) != 0) ||
- ((rv = nni_win_io_register((HANDLE) s)) != 0)) {
+ nni_win_io_init(&c->recv_io, tcp_recv_cb, c);
+ nni_win_io_init(&c->send_io, tcp_send_cb, c);
+ if ((rv = nni_win_io_register((HANDLE) s)) != 0) {
tcp_free(c);
return (rv);
}
diff --git a/src/platform/windows/win_tcpdial.c b/src/platform/windows/win_tcpdial.c
index b4a6d745..bc5d6f5d 100644
--- a/src/platform/windows/win_tcpdial.c
+++ b/src/platform/windows/win_tcpdial.c
@@ -208,10 +208,7 @@ nni_tcp_dial(nni_tcp_dialer *d, const nni_sockaddr *sa, nni_aio *aio)
c->peername = ss;
- if ((rv = nni_win_io_init(&c->conn_io, tcp_dial_cb, c)) != 0) {
- nni_aio_finish_error(aio, rv);
- return;
- }
+ nni_win_io_init(&c->conn_io, tcp_dial_cb, c);
nni_mtx_lock(&d->mtx);
if (d->closed) {
diff --git a/src/platform/windows/win_tcplisten.c b/src/platform/windows/win_tcplisten.c
index 7cfef8d2..084c30bd 100644
--- a/src/platform/windows/win_tcplisten.c
+++ b/src/platform/windows/win_tcplisten.c
@@ -1,5 +1,5 @@
//
-// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2018 Devolutions <info@devolutions.net>
//
@@ -81,13 +81,13 @@ tcp_listener_funcs(nni_tcp_listener *l)
static void
tcp_accept_cb(nni_win_io *io, int rv, size_t cnt)
{
- nni_tcp_conn * c = io->ptr;
+ nni_tcp_conn *c = io->ptr;
nni_tcp_listener *l = c->listener;
- nni_aio * aio;
+ nni_aio *aio;
int len1;
int len2;
- SOCKADDR * sa1;
- SOCKADDR * sa2;
+ SOCKADDR *sa1;
+ SOCKADDR *sa2;
BOOL nd;
BOOL ka;
@@ -97,6 +97,7 @@ tcp_accept_cb(nni_win_io *io, int rv, size_t cnt)
if ((aio = c->conn_aio) == NULL) {
// This case should not occur. The situation would indicate
// a case where the connection was accepted already.
+ NNI_ASSERT(false);
nni_mtx_unlock(&l->mtx);
return;
}
@@ -168,6 +169,7 @@ nni_tcp_listener_close(nni_tcp_listener *l)
if (!l->closed) {
nni_aio *aio;
l->closed = true;
+ closesocket(l->s);
NNI_LIST_FOREACH (&l->aios, aio) {
nni_tcp_conn *c;
@@ -177,7 +179,6 @@ nni_tcp_listener_close(nni_tcp_listener *l)
CancelIoEx((HANDLE) c->s, &c->conn_io.olpd);
}
}
- closesocket(l->s);
}
nni_mtx_unlock(&l->mtx);
}
@@ -270,7 +271,7 @@ static void
tcp_accept_cancel(nni_aio *aio, void *arg, int rv)
{
nni_tcp_listener *l = arg;
- nni_tcp_conn * c;
+ nni_tcp_conn *c;
nni_mtx_lock(&l->mtx);
if ((c = nni_aio_get_prov_data(aio)) != NULL) {
@@ -322,8 +323,9 @@ nni_tcp_listener_accept(nni_tcp_listener *l, nni_aio *aio)
c->listener = l;
c->conn_aio = aio;
nni_aio_set_prov_data(aio, c);
- if (((rv = nni_win_io_init(&c->conn_io, tcp_accept_cb, c)) != 0) ||
- ((rv = nni_aio_schedule(aio, tcp_accept_cancel, l)) != 0)) {
+ nni_win_io_init(&c->conn_io, tcp_accept_cb, c);
+
+ if ((rv = nni_aio_schedule(aio, tcp_accept_cancel, l)) != 0) {
nni_aio_set_prov_data(aio, NULL);
nni_mtx_unlock(&l->mtx);
nng_stream_free(&c->ops);
diff --git a/src/platform/windows/win_udp.c b/src/platform/windows/win_udp.c
index 88f2cd5b..09064e2f 100644
--- a/src/platform/windows/win_udp.c
+++ b/src/platform/windows/win_udp.c
@@ -1,5 +1,5 @@
//
-// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -38,7 +38,7 @@ static void udp_recv_start(nni_plat_udp *);
int
nni_plat_udp_open(nni_plat_udp **udpp, nni_sockaddr *sa)
{
- nni_plat_udp * u;
+ nni_plat_udp *u;
SOCKADDR_STORAGE ss;
int sslen;
DWORD no;
@@ -67,8 +67,9 @@ nni_plat_udp_open(nni_plat_udp **udpp, nni_sockaddr *sa)
(void) setsockopt(
u->s, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &no, sizeof(no));
- if (((rv = nni_win_io_init(&u->rxio, udp_recv_cb, u)) != 0) ||
- ((rv = nni_win_io_register((HANDLE) u->s)) != 0)) {
+ nni_win_io_init(&u->rxio, udp_recv_cb, u);
+
+ if ((rv = nni_win_io_register((HANDLE) u->s)) != 0) {
nni_plat_udp_close(u);
return (rv);
}
@@ -102,7 +103,6 @@ nni_plat_udp_close(nni_plat_udp *u)
closesocket(u->s);
}
- nni_win_io_fini(&u->rxio);
nni_mtx_fini(&u->lk);
nni_cv_fini(&u->cv);
NNI_FREE_STRUCT(u);
@@ -115,10 +115,10 @@ nni_plat_udp_send(nni_plat_udp *u, nni_aio *aio)
{
SOCKADDR_STORAGE to;
int tolen;
- nng_sockaddr * sa;
+ nng_sockaddr *sa;
unsigned naiov;
- nni_iov * aiov;
- WSABUF * iov;
+ nni_iov *aiov;
+ WSABUF *iov;
int rv;
DWORD nsent;
@@ -191,7 +191,7 @@ udp_recv_cb(nni_win_io *io, int rv, size_t num)
{
nni_plat_udp *u = io->ptr;
nni_sockaddr *sa;
- nni_aio * aio;
+ nni_aio *aio;
nni_mtx_lock(&u->lk);
if ((aio = nni_list_first(&u->rxq)) == NULL) {
@@ -226,7 +226,7 @@ udp_recv_start(nni_plat_udp *u)
DWORD flags;
nni_iov *aiov;
unsigned naiov;
- WSABUF * iov;
+ WSABUF *iov;
nni_aio *aio;
if ((u->s == INVALID_SOCKET) || (u->closed)) {