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