diff options
author | Raimo Niskanen <[email protected]> | 2010-06-21 15:22:37 +0200 |
---|---|---|
committer | Raimo Niskanen <[email protected]> | 2010-07-07 11:44:40 +0200 |
commit | 2128fcef45951e159f05e5667841a7442acfa1be (patch) | |
tree | 3cf3f9be373e9c03dbc3b061a0d406b17a7fed81 /erts/emulator/drivers/common | |
parent | 5ef0b06ddbaa48499394c30d56fc81e7162abf50 (diff) | |
download | otp-2128fcef45951e159f05e5667841a7442acfa1be.tar.gz otp-2128fcef45951e159f05e5667841a7442acfa1be.tar.bz2 otp-2128fcef45951e159f05e5667841a7442acfa1be.zip |
Fix inet_drv to detect passive mode UDP errors for SCTP builds
Debug and patch by Per Hedeland for R13B04 on erlang-patches:
Connected UDP (and handling of any other errors in UDP recv())
is broken in passive mode for all SCTP-enabled builds.
Diffstat (limited to 'erts/emulator/drivers/common')
-rw-r--r-- | erts/emulator/drivers/common/inet_drv.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c index 87691fc1bc..0ea54930ba 100644 --- a/erts/emulator/drivers/common/inet_drv.c +++ b/erts/emulator/drivers/common/inet_drv.c @@ -9333,11 +9333,13 @@ static int packet_inet_input(udp_descriptor* udesc, HANDLE event) if (err != ERRNO_BLOCK) { if (!desc->active) { #ifdef HAVE_SCTP - if (short_recv) + if (short_recv) { async_error_am(desc, am_short_recv); - else -#else + } else { async_error(desc, err); + } +#else + async_error(desc, err); #endif driver_cancel_timer(desc->port); sock_select(desc,FD_READ,0); |