aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--erts/preloaded/src/socket.erl7
1 files changed, 4 insertions, 3 deletions
diff --git a/erts/preloaded/src/socket.erl b/erts/preloaded/src/socket.erl
index f8aa75bf8f..a67a019b80 100644
--- a/erts/preloaded/src/socket.erl
+++ b/erts/preloaded/src/socket.erl
@@ -1424,7 +1424,7 @@ setopt(#socket{info = Info, ref = SockRef}, Level, Key, Value) ->
Level :: integer(),
Key :: {NativeOpt, ValueSize},
NativeOpt :: integer(),
- ValueSize :: non_neg_integer(),
+ ValueSize :: int | bool | non_neg_integer(),
Value :: term(),
Reason :: term().
@@ -1437,7 +1437,7 @@ getopt(#socket{info = Info, ref = SockRef}, Level, Key) ->
{EIsEncoded, ELevel} = enc_getopt_level(Level),
EKey = enc_getopt_key(Level, Key, Domain, Type, Protocol),
%% We may need to decode the value (for the same reason
- %% we needed to encode the value for setopt).
+ %% we (may have) needed to encode the value for setopt).
case nif_getopt(SockRef, EIsEncoded, ELevel, EKey) of
ok ->
ok;
@@ -2020,7 +2020,8 @@ enc_sockopt_key(Level, Opt, set = _Dir, _D, _T, _P)
enc_sockopt_key(Level, {NativeOpt, ValueSize} = Opt, get = _Dir, _D, _T, _P)
when is_integer(Level) andalso
is_integer(NativeOpt) andalso
- is_integer(ValueSize) andalso (ValueSize >= 0) ->
+ ((is_integer(ValueSize) andalso (ValueSize >= 0)) orelse
+ ((ValueSize =:= int) orelse (ValueSize =:= bool))) ->
Opt;
enc_sockopt_key(Level, Opt, _Dir, _Domain, _Type, _Protocol) ->