aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/io.c
diff options
context:
space:
mode:
authorPer Hedeland <[email protected]>2012-01-04 10:57:59 +0100
committerHenrik Nord <[email protected]>2012-01-04 15:24:08 +0100
commit949ee23d72e4412fed3059c04e395f995388a5fb (patch)
tree7806efe10aae7c0a03cf4a9bf28d9e494061c730 /erts/emulator/beam/io.c
parent34dca57472ba2f4e82bb03d3713e3318613093bb (diff)
downloadotp-949ee23d72e4412fed3059c04e395f995388a5fb.tar.gz
otp-949ee23d72e4412fed3059c04e395f995388a5fb.tar.bz2
otp-949ee23d72e4412fed3059c04e395f995388a5fb.zip
Fix returned error from gen_tcp:accept/1,2 when running out of ports
The {error, enfile} return value is badly misleading and confusing for this case, since the Posix ENFILE errno value has a well-defined meaning that has nothing to do with Erlang ports. The fix changes the return value to {error, system_limit}, which is consistent with e.g. various file(3) functions. inet:format_error/1 has also been updated to support system_limit in the same manner as file:format_error/1.
Diffstat (limited to 'erts/emulator/beam/io.c')
-rw-r--r--erts/emulator/beam/io.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c
index 49cd0e5f53..f5a58f9dac 100644
--- a/erts/emulator/beam/io.c
+++ b/erts/emulator/beam/io.c
@@ -743,7 +743,7 @@ driver_create_port(ErlDrvPort creator_port_ix, /* Creating port */
return (ErlDrvTermData) -1; /* pid does not exist */
}
if ((port_num = get_free_port()) < 0) {
- errno = ENFILE;
+ errno = SYSTEM_LIMIT;
erts_smp_proc_unlock(rp, ERTS_PROC_LOCK_LINK);
erts_smp_mtx_unlock(&erts_driver_list_lock);
return (ErlDrvTermData) -1;