diff options
author | Micael Karlberg <[email protected]> | 2018-05-17 15:21:59 +0200 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2018-09-18 13:01:37 +0200 |
commit | 4f165a244cb23405ed7f607836098f180f1be08b (patch) | |
tree | 78776d971bc7751159056e3e4bffd93ad48d300c | |
parent | 993f22cab851d704c40f04cda5d5c3730539a6f8 (diff) | |
download | otp-4f165a244cb23405ed7f607836098f180f1be08b.tar.gz otp-4f165a244cb23405ed7f607836098f180f1be08b.tar.bz2 otp-4f165a244cb23405ed7f607836098f180f1be08b.zip |
[socket-nif] More getopt
Added guards and type specs for native getopt.
-rw-r--r-- | erts/preloaded/src/socket.erl | 7 |
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) -> |