summaryrefslogtreecommitdiff
path: root/erts/emulator/drivers/common/inet_drv.c
diff options
context:
space:
mode:
authorErlang/OTP <otp@erlang.org>2020-05-20 09:57:30 +0200
committerErlang/OTP <otp@erlang.org>2020-05-20 09:57:30 +0200
commitec6325aba9c17b102045ba75bd0495704cff0d28 (patch)
treeaa3e046f2cd1bbeaab91dc96894edc97052a3a7e /erts/emulator/drivers/common/inet_drv.c
parentbb6a061d36f20717be9207a10b5ed97864c1d5fe (diff)
parentc3bd412f73a4bf7f67c9179e0bb0feb8a14630f1 (diff)
downloaderlang-ec6325aba9c17b102045ba75bd0495704cff0d28.tar.gz
Merge branch 'bmk/kernel/20200514/sctp_and_udp_recv_hangs_on_close/m22/OTP-16654' into maint-23
* bmk/kernel/20200514/sctp_and_udp_recv_hangs_on_close/m22/OTP-16654: [kernel|test] Add SCTP test case for recv socket close [kernel|test] Add UDP test case for recv socket close [erts] Inform all async(s) when closing udp/sctp socket
Diffstat (limited to 'erts/emulator/drivers/common/inet_drv.c')
-rw-r--r--erts/emulator/drivers/common/inet_drv.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c
index 42a5936513..6797b5d32f 100644
--- a/erts/emulator/drivers/common/inet_drv.c
+++ b/erts/emulator/drivers/common/inet_drv.c
@@ -12254,14 +12254,15 @@ static void packet_inet_stop(ErlDrvData e)
into "udp_descriptor*" or "inet_descriptor*":
*/
udp_descriptor * udesc = (udp_descriptor*) e;
- inet_descriptor* descr = INETP(udesc);
+ inet_descriptor* desc = INETP(udesc);
if (udesc->i_buf != NULL) {
release_buffer(udesc->i_buf);
udesc->i_buf = NULL;
}
- ASSERT(NO_SUBSCRIBERS(&(descr->empty_out_q_subs)));
- inet_stop(descr);
+ ASSERT(NO_SUBSCRIBERS(&(desc->empty_out_q_subs)));
+ async_error_am_all(desc, am_closed);
+ inet_stop(desc);
}
static int packet_error(udp_descriptor* udesc, int err)