diff options
author | Luca Favatella <[email protected]> | 2018-03-05 11:05:34 +0000 |
---|---|---|
committer | Luca Favatella <[email protected]> | 2018-03-05 11:36:17 +0000 |
commit | 81dc712abfc5e93d996191178e555d0c6af3652d (patch) | |
tree | 14406681f03e1f27aedae6ae63ee4cd7f47cd36b | |
parent | 27cfa1da6d35674f6cd169b103385a09c8d4c55a (diff) | |
download | otp-81dc712abfc5e93d996191178e555d0c6af3652d.tar.gz otp-81dc712abfc5e93d996191178e555d0c6af3652d.tar.bz2 otp-81dc712abfc5e93d996191178e555d0c6af3652d.zip |
inets: refine types and doc of http_uri:parse options
-rw-r--r-- | lib/inets/doc/src/http_uri.xml | 9 | ||||
-rw-r--r-- | lib/inets/src/http_lib/http_uri.erl | 13 |
2 files changed, 17 insertions, 5 deletions
diff --git a/lib/inets/doc/src/http_uri.xml b/lib/inets/doc/src/http_uri.xml index 97be292d87..f57214a7ce 100644 --- a/lib/inets/doc/src/http_uri.xml +++ b/lib/inets/doc/src/http_uri.xml @@ -118,7 +118,7 @@ <v>Option = {ipv6_host_with_brackets, boolean()} | {scheme_defaults, scheme_defaults()} | {fragment, boolean()} | - {scheme_validation_fun, fun()}]</v> + {scheme_validation_fun, fun()}</v> <v>Result = {Scheme, UserInfo, Host, Port, Path, Query} | {Scheme, UserInfo, Host, Port, Path, Query, Fragment}</v> <v>Scheme = scheme()</v> @@ -153,6 +153,13 @@ fun(SchemeStr :: string() | binary()) -> <p>It is called before scheme string gets converted into scheme atom and thus possible atom leak could be prevented</p> + <warning> + <p>The scheme portion of the URI gets converted into atom, + meaning that atom leak may occur. Specifying a scheme + validation fun is recommended unless the URI is already + sanitized.</p> + </warning> + <marker id="encode"></marker> </desc> </func> diff --git a/lib/inets/src/http_lib/http_uri.erl b/lib/inets/src/http_lib/http_uri.erl index 648bd0538a..3bada84357 100644 --- a/lib/inets/src/http_lib/http_uri.erl +++ b/lib/inets/src/http_lib/http_uri.erl @@ -81,13 +81,15 @@ -type hex_uri() :: string() | binary(). %% Hexadecimal encoded URI. -type maybe_hex_uri() :: string() | binary(). %% A possibly hexadecimal encoded URI. +-type scheme_defaults() :: [{scheme(), default_scheme_port_number()}]. +-type scheme_validation_fun() :: fun((SchemeStr :: string() | binary()) -> + valid | {error, Reason :: term()}). + %%%========================================================================= %%% API %%%========================================================================= --spec scheme_defaults() -> - [{scheme(), default_scheme_port_number()}]. - +-spec scheme_defaults() -> scheme_defaults(). scheme_defaults() -> [{http, 80}, {https, 443}, @@ -106,7 +108,10 @@ parse(AbsURI) -> parse(AbsURI, []). -spec parse(uri(), [Option]) -> {ok, parse_result()} | {error, term()} when - Option :: {atom(), term()}. + Option :: {ipv6_host_with_brackets, boolean()} | + {scheme_defaults, scheme_defaults()} | + {fragment, boolean()} | + {scheme_validation_fun, scheme_validation_fun()}. parse(AbsURI, Opts) -> case parse_scheme(AbsURI, Opts) of {error, Reason} -> |