Skip to content

Commit 4e5337c

Browse files
committed
Merge branch 'maint'
2 parents c1f9db5 + 57f7f9a commit 4e5337c

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

erts/emulator/nifs/win32/win_socket_asyncio.c

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
6-
* Copyright Ericsson AB 2023-2025. All Rights Reserved.
6+
* Copyright Ericsson AB 2023-2026. All Rights Reserved.
77
*
88
* Licensed under the Apache License, Version 2.0 (the "License");
99
* you may not use this file except in compliance with the License.
@@ -5800,12 +5800,12 @@ ERL_NIF_TERM esaio_cancel_accept(ErlNifEnv* env,
58005800
ESOCK_ASSERT( DEMONP("esaio_cancel_accept -> acceptor",
58015801
env, descP, &req.mon) == 0);
58025802

5803-
SSDBG( descP,
5803+
SSDBG( descP,
58045804
("WIN-ESAIO",
58055805
"esaio_cancel_accept {%d} -> try cancel accept I/O request\r\n",
58065806
descP->sock) );
58075807

5808-
if (! CancelIoEx((HANDLE) descP->sock, (OVERLAPPED*) req.dataP)) {
5808+
if (! CancelIoEx((HANDLE) descP->sock, (OVERLAPPED*) req.dataP)) {
58095809

58105810
/* What does this mean?
58115811
* One of the possible reasons is that the accept succeeded.
@@ -5823,9 +5823,12 @@ ERL_NIF_TERM esaio_cancel_accept(ErlNifEnv* env,
58235823

58245824
}
58255825

5826-
/* Request cleanup (demonitor already done above) */
5827-
esock_clear_env("esaio_cancel_accept -> req cleanup", req.env);
5828-
esock_free_env("esaio_cancel_accept -> req cleanup", req.env);
5826+
/*
5827+
* Request env cleanup is done by the completion thread(s).
5828+
* (we *know* a request has been issued, so when we cancel,
5829+
* a thread will eventually be activated and expect the
5830+
* environment to be usable.
5831+
*/
58295832

58305833
/* *Maybe* update listen socket (read) state
58315834
* (depends on if the queue is now empty)
@@ -7494,9 +7497,9 @@ void esaio_completion_accept_aborted(ErlNifEnv* env,
74947497

74957498
SSDBG( descP,
74967499
("WIN-ESAIO",
7497-
"esaio_completion_accept_aborted(%d) -> "
7500+
"%s(%d) -> "
74987501
"try get request"
7499-
"\r\n", descP->sock) );
7502+
"\r\n", __FUNCTION__, descP->sock) );
75007503

75017504
if (esock_acceptor_get(env, descP,
75027505
&opDataP->accRef,
@@ -7507,14 +7510,18 @@ void esaio_completion_accept_aborted(ErlNifEnv* env,
75077510

75087511
SSDBG( descP,
75097512
("WIN-ESAIO",
7510-
"esaio_completion_accept_aborted(%d) -> "
7513+
"%s(%d) -> "
75117514
"send abort message to %T"
7512-
"\r\n", descP->sock, req.pid) );
7515+
"\r\n", __FUNCTION__, descP->sock, req.pid) );
75137516

75147517
/* Inform the user waiting for a reply */
75157518
esock_send_abort_msg(env, descP, opDataP->lSockRef,
75167519
&req, reason);
75177520

7521+
/* *** cleanup *** */
7522+
esock_clear_env("esaio_cancel_accept -> req cleanup", req.env);
7523+
esock_free_env("esaio_cancel_accept -> req cleanup", req.env);
7524+
75187525
}
75197526

75207527
/* The socket not being open (assumed closing),
@@ -7523,11 +7530,11 @@ void esaio_completion_accept_aborted(ErlNifEnv* env,
75237530

75247531
SSDBG( descP,
75257532
("WIN-ESAIO",
7526-
"esaio_completion_accept_aborted(%d) -> "
7533+
"%s(%d) -> "
75277534
"maybe send close message => "
75287535
"\r\n is socket (read) open: %s"
75297536
"\r\n",
7530-
descP->sock, B2S((IS_OPEN(descP->readState)))) );
7537+
__FUNCTION__, descP->sock, B2S((IS_OPEN(descP->readState)))) );
75317538

75327539
if (! IS_OPEN(descP->readState)) {
75337540

@@ -7544,11 +7551,11 @@ void esaio_completion_accept_aborted(ErlNifEnv* env,
75447551

75457552
SSDBG( descP,
75467553
("WIN-ESAIO",
7547-
"esaio_completion_accept_aborted(%d) -> "
7554+
"%s(%d) -> "
75487555
"all queues are empty => "
75497556
"\r\n send close message"
75507557
"\r\n",
7551-
descP->sock) );
7558+
__FUNCTION__, descP->sock) );
75527559

75537560
esaio_stop(env, descP);
75547561

@@ -7561,9 +7568,9 @@ void esaio_completion_accept_aborted(ErlNifEnv* env,
75617568
*/
75627569
SSDBG( descP,
75637570
("WIN-ESAIO",
7564-
"esaio_completion_accept_aborted(%d) -> "
7571+
"%s(%d) -> "
75657572
"maybe (%s) update (read) state (0x%X)\r\n",
7566-
descP->sock,
7573+
__FUNCTION__, descP->sock,
75677574
B2S((descP->acceptorsQ.first == NULL)), descP->readState) );
75687575
if (descP->acceptorsQ.first == NULL) {
75697576
descP->readState &= ~(ESOCK_STATE_ACCEPTING | ESOCK_STATE_SELECTED);

0 commit comments

Comments
 (0)