aboutsummaryrefslogtreecommitdiffstats
path: root/src/ranch.erl
diff options
context:
space:
mode:
authorFred Hebert <[email protected]>2013-01-09 14:39:31 -0500
committerFred Hebert <[email protected]>2013-01-15 11:34:52 -0500
commitc7bf6d2e4d4ae559ffd1ca429cbe605f710e7f0c (patch)
tree357f7d1a135a7bdbb1b355191897cebc040a5b82 /src/ranch.erl
parent9fd9294a13375a56c42b4b77225bbe317ecf0b4d (diff)
downloadranch-c7bf6d2e4d4ae559ffd1ca429cbe605f710e7f0c.tar.gz
ranch-c7bf6d2e4d4ae559ffd1ca429cbe605f710e7f0c.tar.bz2
ranch-c7bf6d2e4d4ae559ffd1ca429cbe605f710e7f0c.zip
Allow raw socket options for TCP and SSL
This patch lets the user set and use raw socket options as described in inet:setopts/2 documentation. The raw options can be useful to use TCP features that are platform- specific and not supported in inet in general, such as TCP_DEFER_ACCEPT or TCP_LINGER2 in linux stacks, for example.
Diffstat (limited to 'src/ranch.erl')
-rw-r--r--src/ranch.erl5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/ranch.erl b/src/ranch.erl
index 752819e..6f1b6fe 100644
--- a/src/ranch.erl
+++ b/src/ranch.erl
@@ -169,6 +169,11 @@ filter_options([Opt = {Key, _}|Tail], AllowedKeys, Acc) ->
case lists:member(Key, AllowedKeys) of
true -> filter_options(Tail, AllowedKeys, [Opt|Acc]);
false -> filter_options(Tail, AllowedKeys, Acc)
+ end;
+filter_options([Opt = {raw, _, _, _}|Tail], AllowedKeys, Acc) ->
+ case lists:member(raw, AllowedKeys) of
+ true -> filter_options(Tail, AllowedKeys, [Opt|Acc]);
+ false -> filter_options(Tail, AllowedKeys, Acc)
end.
%% @doc Add an option to a list, but only if it wasn't previously set.