diff options
Diffstat (limited to 'lib/inets')
-rw-r--r-- | lib/inets/doc/src/http_uri.xml | 12 | ||||
-rw-r--r-- | lib/inets/doc/src/httpc.xml | 50 | ||||
-rw-r--r-- | lib/inets/doc/src/httpd.xml | 26 | ||||
-rw-r--r-- | lib/inets/doc/src/httpd_custom_api.xml | 8 | ||||
-rw-r--r-- | lib/inets/doc/src/httpd_socket.xml | 8 | ||||
-rw-r--r-- | lib/inets/doc/src/httpd_util.xml | 55 | ||||
-rw-r--r-- | lib/inets/doc/src/inets.xml | 20 | ||||
-rw-r--r-- | lib/inets/doc/src/mod_alias.xml | 10 | ||||
-rw-r--r-- | lib/inets/doc/src/mod_auth.xml | 58 | ||||
-rw-r--r-- | lib/inets/doc/src/mod_esi.xml | 8 | ||||
-rw-r--r-- | lib/inets/doc/src/mod_security.xml | 34 | ||||
-rw-r--r-- | lib/inets/doc/src/notes.xml | 66 | ||||
-rw-r--r-- | lib/inets/src/http_client/httpc_handler.erl | 8 | ||||
-rw-r--r-- | lib/inets/test/httpd_bench_SUITE.erl | 11 | ||||
-rw-r--r-- | lib/inets/vsn.mk | 2 |
15 files changed, 222 insertions, 154 deletions
diff --git a/lib/inets/doc/src/http_uri.xml b/lib/inets/doc/src/http_uri.xml index 2dec5acbf9..6d3547f4fe 100644 --- a/lib/inets/doc/src/http_uri.xml +++ b/lib/inets/doc/src/http_uri.xml @@ -30,7 +30,7 @@ <rev></rev> </header> - <module>http_uri</module> + <module since="OTP R15B01">http_uri</module> <modulesummary>URI utility module</modulesummary> <description> @@ -79,7 +79,7 @@ <funcs> <func> - <name>decode(HexEncodedURI) -> URI</name> + <name since="OTP R15B01">decode(HexEncodedURI) -> URI</name> <fsummary>Decodes a hexadecimal encoded URI.</fsummary> <type> @@ -93,7 +93,7 @@ </desc> </func> <func> - <name>encode(URI) -> HexEncodedURI</name> + <name since="OTP R15B01">encode(URI) -> HexEncodedURI</name> <fsummary>Encodes a hexadecimal encoded URI.</fsummary> <type> @@ -109,8 +109,8 @@ </func> <func> - <name>parse(URI) -> {ok, Result} | {error, Reason}</name> - <name>parse(URI, Options) -> {ok, Result} | {error, Reason}</name> + <name since="OTP R15B01">parse(URI) -> {ok, Result} | {error, Reason}</name> + <name since="OTP R15B01">parse(URI, Options) -> {ok, Result} | {error, Reason}</name> <fsummary>Parses a URI.</fsummary> <type> <v>URI = uri()</v> @@ -165,7 +165,7 @@ fun(SchemeStr :: string() | binary()) -> </func> <func> - <name>scheme_defaults() -> SchemeDefaults</name> + <name since="OTP R15B01">scheme_defaults() -> SchemeDefaults</name> <fsummary>A list of the scheme and their default ports.</fsummary> <type> <v>SchemeDefaults = [{scheme(), default_scheme_port_number()}] </v> diff --git a/lib/inets/doc/src/httpc.xml b/lib/inets/doc/src/httpc.xml index a2871f3b95..7451b314ec 100644 --- a/lib/inets/doc/src/httpc.xml +++ b/lib/inets/doc/src/httpc.xml @@ -30,7 +30,7 @@ <rev></rev> </header> - <module>httpc</module> + <module since="OTP R13B04">httpc</module> <modulesummary>An HTTP/1.1 client</modulesummary> <description> @@ -151,8 +151,8 @@ <funcs> <func> - <name>cancel_request(RequestId) -></name> - <name>cancel_request(RequestId, Profile) -> ok</name> + <name since="OTP R13B04">cancel_request(RequestId) -></name> + <name since="OTP R13B04">cancel_request(RequestId, Profile) -> ok</name> <fsummary>Cancels an asynchronous HTTP request.</fsummary> <type> <v>RequestId = request_id() - A unique identifier as returned @@ -169,9 +169,9 @@ </func> <func> - <name>cookie_header(Url) -> </name> - <name>cookie_header(Url, Profile | Opts) -> header() | {error, Reason}</name> - <name>cookie_header(Url, Opts, Profile) -> header() | {error, Reason}</name> + <name since="OTP R13B04">cookie_header(Url) -> </name> + <name since="OTP R13B04">cookie_header(Url, Profile | Opts) -> header() | {error, Reason}</name> + <name since="OTP R15B">cookie_header(Url, Opts, Profile) -> header() | {error, Reason}</name> <fsummary>Returns the cookie header that would have been sent when making a request to URL using the profile <c>Profile</c>.</fsummary> <type> @@ -193,8 +193,8 @@ </func> <func> - <name>get_options(OptionItems) -> {ok, Values} | {error, Reason}</name> - <name>get_options(OptionItems, Profile) -> {ok, Values} | {error, Reason}</name> + <name since="OTP R15B01">get_options(OptionItems) -> {ok, Values} | {error, Reason}</name> + <name since="OTP R15B01">get_options(OptionItems, Profile) -> {ok, Values} | {error, Reason}</name> <fsummary>Gets the currently used options.</fsummary> <type> <v>OptionItems = all | [option_item()]</v> @@ -223,8 +223,8 @@ </func> <func> - <name>info() -> list()</name> - <name>info(Profile) -> list()</name> + <name since="OTP R15B02">info() -> list()</name> + <name since="OTP R15B02">info(Profile) -> list()</name> <fsummary>Produces a list of miscellaneous information.</fsummary> <type> <v>Profile = profile() | pid()</v> @@ -239,8 +239,8 @@ <func> - <name>reset_cookies() -> void()</name> - <name>reset_cookies(Profile) -> void()</name> + <name since="OTP R13B04">reset_cookies() -> void()</name> + <name since="OTP R13B04">reset_cookies(Profile) -> void()</name> <fsummary>Resets the cookie database.</fsummary> <type> <v>Profile = profile() | pid()</v> @@ -254,8 +254,8 @@ </func> <func> - <name>request(Url) -> </name> - <name>request(Url, Profile) -> {ok, Result} | {error, Reason}</name> + <name since="OTP R13B04">request(Url) -> </name> + <name since="OTP R13B04">request(Url, Profile) -> {ok, Result} | {error, Reason}</name> <fsummary>Sends a get HTTP request.</fsummary> <type> <v>Url = url()</v> @@ -272,8 +272,8 @@ </func> <func> - <name>request(Method, Request, HTTPOptions, Options) -></name> - <name>request(Method, Request, HTTPOptions, Options, Profile) -> {ok, Result} | {ok, saved_to_file} | {error, Reason}</name> + <name since="OTP R13B04">request(Method, Request, HTTPOptions, Options) -></name> + <name since="OTP R13B04">request(Method, Request, HTTPOptions, Options, Profile) -> {ok, Result} | {ok, saved_to_file} | {error, Reason}</name> <fsummary>Sends an HTTP request.</fsummary> <type> @@ -521,8 +521,8 @@ <func> - <name>set_options(Options) -> </name> - <name>set_options(Options, Profile) -> ok | {error, Reason}</name> + <name since="OTP R13B04">set_options(Options) -> </name> + <name since="OTP R13B04">set_options(Options, Profile) -> ok | {error, Reason}</name> <fsummary>Sets options to be used for subsequent requests.</fsummary> <type> <v>Options = [Option]</v> @@ -639,8 +639,8 @@ </func> <func> - <name>store_cookies(SetCookieHeaders, Url) -> </name> - <name>store_cookies(SetCookieHeaders, Url, Profile) -> ok | {error, Reason}</name> + <name since="OTP R14B02">store_cookies(SetCookieHeaders, Url) -> </name> + <name since="OTP R14B02">store_cookies(SetCookieHeaders, Url, Profile) -> ok | {error, Reason}</name> <fsummary>Saves the cookies defined in <c>SetCookieHeaders</c> in the client profile cookie database.</fsummary> <type> @@ -658,7 +658,7 @@ </func> <func> - <name>stream_next(Pid) -> ok</name> + <name since="OTP R13B04">stream_next(Pid) -> ok</name> <fsummary>Triggers the next message to be streamed, that is, the same behavior as active one for sockets. </fsummary> @@ -676,8 +676,8 @@ </func> <func> - <name>which_cookies() -> cookies()</name> - <name>which_cookies(Profile) -> cookies()</name> + <name since="OTP R13B04">which_cookies() -> cookies()</name> + <name since="OTP R13B04">which_cookies(Profile) -> cookies()</name> <fsummary>Dumps the entire cookie database.</fsummary> <type> <v>Profile = profile() | pid()</v> @@ -695,8 +695,8 @@ </func> <func> - <name>which_sessions() -> session_info()</name> - <name>which_sessions(Profile) -> session_info()</name> + <name since="OTP R15B02">which_sessions() -> session_info()</name> + <name since="OTP R15B02">which_sessions(Profile) -> session_info()</name> <fsummary>Produces a slightly processed dump of the sessions database.</fsummary> <type> <v>Profile = profile() | pid()</v> diff --git a/lib/inets/doc/src/httpd.xml b/lib/inets/doc/src/httpd.xml index e5adb4eb20..1750078db0 100644 --- a/lib/inets/doc/src/httpd.xml +++ b/lib/inets/doc/src/httpd.xml @@ -29,7 +29,7 @@ <rev>2.2</rev> <file>httpd.sgml</file> </header> - <module>httpd</module> + <module since="">httpd</module> <modulesummary> HTTP server API </modulesummary> @@ -874,8 +874,8 @@ text/plain asc txt</pre> <funcs> <func> - <name>info(Pid) -></name> - <name>info(Pid, Properties) -> [{Option, Value}]</name> + <name since="">info(Pid) -></name> + <name since="">info(Pid, Properties) -> [{Option, Value}]</name> <fsummary>Fetches information about the HTTP server.</fsummary> <type> <v>Properties = [property()]</v> @@ -899,10 +899,10 @@ text/plain asc txt</pre> </func> <func> - <name>info(Address, Port) -> </name> - <name>info(Address, Port, Profile) -> </name> - <name>info(Address, Port, Profile, Properties) -> [{Option, Value}] </name> - <name>info(Address, Port, Properties) -> [{Option, Value}] </name> + <name since="">info(Address, Port) -> </name> + <name since="">info(Address, Port, Profile) -> </name> + <name since="OTP 18.0">info(Address, Port, Profile, Properties) -> [{Option, Value}] </name> + <name since="">info(Address, Port, Properties) -> [{Option, Value}] </name> <fsummary>Fetches information about the HTTP server.</fsummary> <type> <v>Address = ip_address()</v> @@ -927,7 +927,7 @@ text/plain asc txt</pre> </func> <func> - <name>reload_config(Config, Mode) -> ok | {error, Reason}</name> + <name since="">reload_config(Config, Mode) -> ok | {error, Reason}</name> <fsummary>Reloads the HTTP server configuration without restarting the server.</fsummary> <type> @@ -1051,7 +1051,7 @@ text/plain asc txt</pre> </section> <funcs> <func> - <name>Module:do(ModData)-> {proceed, OldData} | {proceed, NewData} | {break, NewData} | done</name> + <name since="">Module:do(ModData)-> {proceed, OldData} | {proceed, NewData} | {break, NewData} | done</name> <fsummary>Called for each request to the web server.</fsummary> <type> <v>OldData = list()</v> @@ -1105,7 +1105,7 @@ text/plain asc txt</pre> </func> <func> - <name>Module:load(Line, AccIn)-> eof | ok | {ok, AccOut} | {ok, AccOut, {Option, Value}} | {ok, AccOut, [{Option, Value}]} | {error, Reason}</name> + <name since="">Module:load(Line, AccIn)-> eof | ok | {ok, AccOut} | {ok, AccOut, {Option, Value}} | {ok, AccOut, [{Option, Value}]} | {error, Reason}</name> <fsummary>Converts a line in an Apache-like config file to an <c>{Option, Value}</c> tuple.</fsummary> <type> @@ -1128,7 +1128,7 @@ text/plain asc txt</pre> </func> <func> - <name>Module:remove(ConfigDB) -> ok | {error, Reason} </name> + <name since="">Module:remove(ConfigDB) -> ok | {error, Reason} </name> <fsummary>Callback function that is called when the web server is closed.</fsummary> <type> <v>ConfigDB = ets_table()</v> @@ -1143,7 +1143,7 @@ text/plain asc txt</pre> </func> <func> - <name>Module:store({Option, Value}, Config)-> {ok, {Option, NewValue}} | {error, Reason}</name> + <name since="">Module:store({Option, Value}, Config)-> {ok, {Option, NewValue}} | {error, Reason}</name> <fsummary>Checks the validity of the configuration options.</fsummary> <type> <v>Line = string()</v> @@ -1171,7 +1171,7 @@ text/plain asc txt</pre> </section> <funcs> <func> - <name>parse_query(QueryString) -> [{Key,Value}]</name> + <name since="">parse_query(QueryString) -> [{Key,Value}]</name> <fsummary>Parses incoming data to <c>erl</c> and <c>eval</c> scripts.</fsummary> <type> <v>QueryString = string()</v> diff --git a/lib/inets/doc/src/httpd_custom_api.xml b/lib/inets/doc/src/httpd_custom_api.xml index d2e5441895..2c0f92ff83 100644 --- a/lib/inets/doc/src/httpd_custom_api.xml +++ b/lib/inets/doc/src/httpd_custom_api.xml @@ -25,7 +25,7 @@ <title>httpd_custom_api</title> <file>httpd_custom_api.xml</file> </header> - <module>httpd_custom_api</module> + <module since="OTP 17.5.6">httpd_custom_api</module> <modulesummary>Behaviour with optional callbacks to customize the inets HTTP server.</modulesummary> <description> <p> The module implementing this behaviour shall be supplied to to the servers @@ -34,7 +34,7 @@ </description> <funcs> <func> - <name>response_default_headers() -> [Header] </name> + <name since="OTP 18.1.1">response_default_headers() -> [Header] </name> <fsummary>Provide default headers for the HTTP servers responses.</fsummary> <type> <v>Header = {HeaderName :: string(), HeaderValue::string()}</v> @@ -48,7 +48,7 @@ </func> <func> - <name>response_header({HeaderName, HeaderValue}) -> {true, Header} | false </name> + <name since="OTP 17.5.6">response_header({HeaderName, HeaderValue}) -> {true, Header} | false </name> <fsummary>Filter and possible alter HTTP response headers.</fsummary> <type> <v>Header = {HeaderName :: string(), HeaderValue::string()}</v> @@ -61,7 +61,7 @@ </func> <func> - <name>request_header({HeaderName, HeaderValue}) -> {true, Header} | false </name> + <name since="OTP 17.5.6">request_header({HeaderName, HeaderValue}) -> {true, Header} | false </name> <fsummary>Filter and possible alter HTTP request headers.</fsummary> <type> <v>Header = {HeaderName :: string(), HeaderValue::string()}</v> diff --git a/lib/inets/doc/src/httpd_socket.xml b/lib/inets/doc/src/httpd_socket.xml index d3aa82a540..22ead06f38 100644 --- a/lib/inets/doc/src/httpd_socket.xml +++ b/lib/inets/doc/src/httpd_socket.xml @@ -29,7 +29,7 @@ <rev>2.2</rev> <file>httpd_socket.sgml</file> </header> - <module>httpd_socket</module> + <module since="">httpd_socket</module> <modulesummary>Communication utility functions to be used by the Erlang web server API programmer.</modulesummary> <description> @@ -43,7 +43,7 @@ <funcs> <func> - <name>deliver(SocketType, Socket, Data) -> Result</name> + <name since="">deliver(SocketType, Socket, Data) -> Result</name> <fsummary>Sends binary data over socket.</fsummary> <type> <v>SocketType = socket_type()</v> @@ -63,7 +63,7 @@ </func> <func> - <name>peername(SocketType,Socket) -> {Port,IPAddress}</name> + <name since="">peername(SocketType,Socket) -> {Port,IPAddress}</name> <fsummary>Returns the port and IP address of the remote socket.</fsummary> <type> <v>SocketType = socket_type()</v> @@ -81,7 +81,7 @@ </func> <func> - <name>resolve() -> HostName</name> + <name since="">resolve() -> HostName</name> <fsummary>Returns the official name of the current host.</fsummary> <type> <v>HostName = string()</v> diff --git a/lib/inets/doc/src/httpd_util.xml b/lib/inets/doc/src/httpd_util.xml index 220a2ede35..e0f947f860 100644 --- a/lib/inets/doc/src/httpd_util.xml +++ b/lib/inets/doc/src/httpd_util.xml @@ -29,7 +29,7 @@ <rev>2.2</rev> <file>httpd_util.sgml</file> </header> - <module>httpd_util</module> + <module since="">httpd_util</module> <modulesummary>Miscellaneous utility functions to be used when implementing Erlang web server API modules.</modulesummary> <description> @@ -41,12 +41,11 @@ <funcs> <func> - <name>convert_request_date(DateString) -> ErlDate|bad_date</name> + <name since="">convert_request_date(DateString) -> ErlDate|bad_date</name> <fsummary>Converts the date to the Erlang date format.</fsummary> <type> <v>DateString = string()</v> - <v>ErlDate = {{Year,Month,Date},{Hour,Min,Sec}}</v> - <v>Year = Month = Date = Hour = Min = Sec = integer()</v> + <v>ErlDate = calendar:datetime() </v> </type> <desc> <p><c>convert_request_date/1</c> converts <c>DateString</c> to @@ -57,7 +56,7 @@ </func> <func> - <name>create_etag(FileInfo) -> Etag</name> + <name since="">create_etag(FileInfo) -> Etag</name> <fsummary>Calculates the Etag for a file.</fsummary> <type> <v>FileInfo = file_info()</v> @@ -71,7 +70,7 @@ </func> <func> - <name>day(NthDayOfWeek) -> DayOfWeek</name> + <name since="">day(NthDayOfWeek) -> DayOfWeek</name> <fsummary>Converts the day of the week (integer [1-7]) to an abbreviated string.</fsummary> <type> @@ -87,7 +86,7 @@ </func> <func> - <name>decode_hex(HexValue) -> DecValue</name> + <name since="">decode_hex(HexValue) -> DecValue</name> <fsummary>Converts a hexadecimal value into its decimal equivalent.</fsummary> <type> <v>HexValue = DecValue = string()</v> @@ -99,7 +98,7 @@ </func> <func> - <name>flatlength(NestedList) -> Size</name> + <name since="">flatlength(NestedList) -> Size</name> <fsummary>Computes the size of a possibly nested list.</fsummary> <type> <v>NestedList = list()</v> @@ -112,7 +111,7 @@ </func> <func> - <name>hexlist_to_integer(HexString) -> Number</name> + <name since="">hexlist_to_integer(HexString) -> Number</name> <fsummary>Converts a hexadecimal string to an integer.</fsummary> <type> <v>Number = integer()</v> @@ -125,7 +124,7 @@ </func> <func> - <name>integer_to_hexlist(Number) -> HexString</name> + <name since="">integer_to_hexlist(Number) -> HexString</name> <fsummary>Converts an integer to a hexadecimal string.</fsummary> <type> <v>Number = integer()</v> @@ -138,8 +137,8 @@ </func> <func> - <name>lookup(ETSTable,Key) -> Result</name> - <name>lookup(ETSTable,Key,Undefined) -> Result</name> + <name since="">lookup(ETSTable,Key) -> Result</name> + <name since="">lookup(ETSTable,Key,Undefined) -> Result</name> <fsummary>Extracts the first value associated with a <c>Key</c> in an ETS table.</fsummary> <type> @@ -160,8 +159,8 @@ </func> <func> - <name>lookup_mime(ConfigDB,Suffix)</name> - <name>lookup_mime(ConfigDB,Suffix,Undefined) -> MimeType</name> + <name since="">lookup_mime(ConfigDB,Suffix)</name> + <name since="">lookup_mime(ConfigDB,Suffix,Undefined) -> MimeType</name> <fsummary>Returns the MIME type associated with a specific file suffix.</fsummary> <type> <v>ConfigDB = ets_table()</v> @@ -179,8 +178,8 @@ </func> <func> - <name>lookup_mime_default(ConfigDB,Suffix)</name> - <name>lookup_mime_default(ConfigDB,Suffix,Undefined) -> MimeType</name> + <name since="">lookup_mime_default(ConfigDB,Suffix)</name> + <name since="">lookup_mime_default(ConfigDB,Suffix,Undefined) -> MimeType</name> <fsummary>Returns the MIME type associated with a specific file suffix or the value of the DefaultType.</fsummary> <type> @@ -201,7 +200,7 @@ </func> <func> - <name>message(StatusCode,PhraseArgs,ConfigDB) -> Message</name> + <name since="">message(StatusCode,PhraseArgs,ConfigDB) -> Message</name> <fsummary>Returns an informative HTTP 1.1 status string in HTML.</fsummary> <type> <v>StatusCode = 301 | 400 | 403 | 404 | 500 | 501 | 504</v> @@ -236,7 +235,7 @@ </func> <func> - <name>month(NthMonth) -> Month</name> + <name since="">month(NthMonth) -> Month</name> <fsummary>Converts the month as an integer (1-12) to an abbreviated string.</fsummary> <type> <v>NthMonth = 1-12</v> @@ -250,7 +249,7 @@ </func> <func> - <name>multi_lookup(ETSTable,Key) -> Result</name> + <name since="">multi_lookup(ETSTable,Key) -> Result</name> <fsummary>Extracts the values associated with a key in an ETS table.</fsummary> <type> <v>ETSTable = ets_table()</v> @@ -265,7 +264,7 @@ </func> <func> - <name>reason_phrase(StatusCode) -> Description</name> + <name since="">reason_phrase(StatusCode) -> Description</name> <fsummary>Returns the description of an HTTP 1.1 status code.</fsummary> <type> <v>StatusCode = 100| 200 | 201 | 202 | 204 | 205 | 206 | 300 | 301 | 302 | 303 | 304 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 410 411 | 412 | 413 | 414 415 | 416 | 417 | 500 | 501 | 502 | 503 | 504 | 505</v> @@ -280,11 +279,11 @@ </func> <func> - <name>rfc1123_date() -> RFC1123Date</name> - <name>rfc1123_date({{YYYY,MM,DD},{Hour,Min,Sec}}) -> RFC1123Date</name> + <name since="">rfc1123_date() -> RFC1123Date</name> + <name since="">rfc1123_date(Date) -> RFC1123Date</name> <fsummary>Returns the current date in RFC 1123 format.</fsummary> <type> - <v>YYYY = MM = DD = Hour = Min = Sec = integer()</v> + <v> Date = calendar:datetime()</v> <v>RFC1123Date = string()</v> </type> <desc> @@ -295,7 +294,7 @@ </func> <func> - <name>split(String,RegExp,N) -> SplitRes</name> + <name since="">split(String,RegExp,N) -> SplitRes</name> <fsummary>Splits a string in N chunks using a regular expression.</fsummary> <type> <v>String = RegExp = string()</v> @@ -313,7 +312,7 @@ </func> <func> - <name>split_script_path(RequestLine) -> Splitted</name> + <name since="">split_script_path(RequestLine) -> Splitted</name> <fsummary>Splits a <c>RequestLine</c> in a file reference to an executable, and a <c>QueryString</c> or a <c>PathInfo</c>string.</fsummary> <type> @@ -330,7 +329,7 @@ </func> <func> - <name>split_path(RequestLine) -> {Path,QueryStringOrPathInfo}</name> + <name since="">split_path(RequestLine) -> {Path,QueryStringOrPathInfo}</name> <fsummary>Splits a <c>RequestLine</c> in a file reference, and a <c>QueryString</c> or a <c>PathInfo</c> string.</fsummary> <type> @@ -356,7 +355,7 @@ </func> <func> - <name>strip(String) -> Stripped</name> + <name since="">strip(String) -> Stripped</name> <fsummary>Returns <c>String</c> where the leading and trailing space tabs are removed.</fsummary> <type> @@ -370,7 +369,7 @@ </func> <func> - <name>suffix(FileName) -> Suffix</name> + <name since="">suffix(FileName) -> Suffix</name> <fsummary>Extracts the file suffix from a given filename.</fsummary> <type> <v>FileName = Suffix = string()</v> diff --git a/lib/inets/doc/src/inets.xml b/lib/inets/doc/src/inets.xml index 9b0ffaad5e..176af3137a 100644 --- a/lib/inets/doc/src/inets.xml +++ b/lib/inets/doc/src/inets.xml @@ -29,7 +29,7 @@ <date></date> <rev></rev> </header> - <module>inets</module> + <module since="">inets</module> <modulesummary>The Inets services API.</modulesummary> <description> <p>This module provides the most basic API to the @@ -51,7 +51,7 @@ <funcs> <func> - <name>services() -> [{Service, Pid}]</name> + <name since="">services() -> [{Service, Pid}]</name> <fsummary>Returns a list of currently running services.</fsummary> <type> <v>Service = service()</v> @@ -68,7 +68,7 @@ </func> <func> - <name>services_info() -> [{Service, Pid, Info}]</name> + <name since="">services_info() -> [{Service, Pid, Info}]</name> <fsummary>Returns a list of currently running services where each service is described by an <c>[{Option, Value}]</c> list.</fsummary> @@ -91,7 +91,7 @@ </func> <func> - <name>service_names() -> [Service] </name> + <name since="">service_names() -> [Service] </name> <fsummary>Returns a list of available service names.</fsummary> <type> <v>Service = service()</v> @@ -104,8 +104,8 @@ </func> <func> - <name>start() -> </name> - <name>start(Type) -> ok | {error, Reason}</name> + <name since="">start() -> </name> + <name since="">start(Type) -> ok | {error, Reason}</name> <fsummary>Starts the <c>Inets</c> application.</fsummary> <type> <v>Type = permanent | transient | temporary</v> @@ -120,8 +120,8 @@ </func> <func> - <name>start(Service, ServiceConfig) -> {ok, Pid} | {error, Reason}</name> - <name>start(Service, ServiceConfig, How) -> {ok, Pid} | {error, Reason}</name> + <name since="">start(Service, ServiceConfig) -> {ok, Pid} | {error, Reason}</name> + <name since="">start(Service, ServiceConfig, How) -> {ok, Pid} | {error, Reason}</name> <fsummary>Dynamically starts an <c>Inets</c> service after the <c>Inets</c> application has been started.</fsummary> <type> @@ -156,7 +156,7 @@ </func> <func> - <name>stop() -> ok </name> + <name since="">stop() -> ok </name> <fsummary>Stops the <c>Inets</c> application.</fsummary> <desc> <p>Stops the <c>Inets</c> application. See also @@ -167,7 +167,7 @@ </func> <func> - <name>stop(Service, Reference) -> ok | {error, Reason} </name> + <name since="">stop(Service, Reference) -> ok | {error, Reason} </name> <fsummary>Stops a started service of the <c>Inets</c> application or takes down a <c>stand_alone </c>service gracefully.</fsummary> <type> diff --git a/lib/inets/doc/src/mod_alias.xml b/lib/inets/doc/src/mod_alias.xml index 6ae19700a5..ff57d49d08 100644 --- a/lib/inets/doc/src/mod_alias.xml +++ b/lib/inets/doc/src/mod_alias.xml @@ -29,7 +29,7 @@ <rev>2.2</rev> <file>mod_alias.sgml</file> </header> - <module>mod_alias</module> + <module since="">mod_alias</module> <modulesummary>URL aliasing.</modulesummary> <description> <p>Erlang web server internal API for handling of, for example, @@ -40,7 +40,7 @@ <funcs> <func> - <name>default_index(ConfigDB, Path) -> NewPath</name> + <name since="">default_index(ConfigDB, Path) -> NewPath</name> <fsummary>Returns a new path with the default resource or file appended.</fsummary> <type> <v>ConfigDB = config_db()</v> @@ -64,7 +64,7 @@ </func> <func> - <name>path(PathData, ConfigDB, RequestURI) -> Path</name> + <name since="">path(PathData, ConfigDB, RequestURI) -> Path</name> <fsummary>Returns the file path to a URL.</fsummary> <type> <v>PathData = interaction_data()</v> @@ -89,7 +89,7 @@ </func> <func> - <name>real_name(ConfigDB, RequestURI, Aliases) -> Ret</name> + <name since="">real_name(ConfigDB, RequestURI, Aliases) -> Ret</name> <fsummary>Expands a request URI using <c>Aliases</c> config directives.</fsummary> <type> <v>ConfigDB = config_db()</v> @@ -120,7 +120,7 @@ </func> <func> - <name>real_script_name(ConfigDB, RequestURI, ScriptAliases) -> Ret</name> + <name since="">real_script_name(ConfigDB, RequestURI, ScriptAliases) -> Ret</name> <fsummary>Expands a request URI using <c>ScriptAliases</c> config directives.</fsummary> <type> diff --git a/lib/inets/doc/src/mod_auth.xml b/lib/inets/doc/src/mod_auth.xml index c4f844622b..ad864ca4d1 100644 --- a/lib/inets/doc/src/mod_auth.xml +++ b/lib/inets/doc/src/mod_auth.xml @@ -29,7 +29,7 @@ <rev>2.3</rev> <file>mod_auth.sgml</file> </header> - <module>mod_auth</module> + <module since="">mod_auth</module> <modulesummary>User authentication using text files, Dets, or Mnesia database.</modulesummary> <description> <p>This module provides for basic user authentication using @@ -38,9 +38,9 @@ <funcs> <func> - <name>add_group_member(GroupName, UserName, Options) -> true | {error, Reason}</name> - <name>add_group_member(GroupName, UserName, Port, Dir) -> true | {error, Reason}</name> - <name>add_group_member(GroupName, UserName, Address, Port, Dir) -> true | {error, Reason}</name> + <name since="">add_group_member(GroupName, UserName, Options) -> true | {error, Reason}</name> + <name since="">add_group_member(GroupName, UserName, Port, Dir) -> true | {error, Reason}</name> + <name since="">add_group_member(GroupName, UserName, Address, Port, Dir) -> true | {error, Reason}</name> <fsummary>Adds a user to a group.</fsummary> <type> <v>GroupName = string()</v> @@ -65,9 +65,9 @@ </func> <func> - <name>add_user(UserName, Options) -> true| {error, Reason}</name> - <name>add_user(UserName, Password, UserData, Port, Dir) -> true | {error, Reason}</name> - <name>add_user(UserName, Password, UserData, Address, Port, Dir) -> true | {error, Reason}</name> + <name since="">add_user(UserName, Options) -> true| {error, Reason}</name> + <name since="">add_user(UserName, Password, UserData, Port, Dir) -> true | {error, Reason}</name> + <name since="">add_user(UserName, Password, UserData, Address, Port, Dir) -> true | {error, Reason}</name> <fsummary>Adds a user to the user database.</fsummary> <type> <v>UserName = string()</v> @@ -92,8 +92,8 @@ </func> <func> - <name>delete_group(GroupName, Options) -> true | {error,Reason} <name>delete_group(GroupName, Port, Dir) -> true | {error, Reason}</name> - <name>delete_group(GroupName, Address, Port, Dir) -> true | {error, Reason}</name> + <name since="">delete_group(GroupName, Options) -> true | {error,Reason} <name>delete_group(GroupName, Port, Dir) -> true | {error, Reason}</name> + <name since="">delete_group(GroupName, Address, Port, Dir) -> true | {error, Reason}</name> <fsummary>Deletes a group.</fsummary> <type> <v>Options = [Option]</v> @@ -115,9 +115,9 @@ </func> <func> - <name>delete_group_member(GroupName, UserName, Options) -> true | {error, Reason}</name> - <name>delete_group_member(GroupName, UserName, Port, Dir) -> true | {error, Reason}</name> - <name>delete_group_member(GroupName, UserName, Address, Port, Dir) -> true | {error, Reason}</name> + <name since="">delete_group_member(GroupName, UserName, Options) -> true | {error, Reason}</name> + <name since="">delete_group_member(GroupName, UserName, Port, Dir) -> true | {error, Reason}</name> + <name since="">delete_group_member(GroupName, UserName, Address, Port, Dir) -> true | {error, Reason}</name> <fsummary>Removes a user from a group.</fsummary> <type> <v>GroupName = string()</v> @@ -141,9 +141,9 @@ </func> <func> - <name>delete_user(UserName,Options) -> true | {error, Reason}</name> - <name>delete_user(UserName, Port, Dir) -> true | {error, Reason}</name> - <name>delete_user(UserName, Address, Port, Dir) -> true | {error, Reason}</name> + <name since="">delete_user(UserName,Options) -> true | {error, Reason}</name> + <name since="">delete_user(UserName, Port, Dir) -> true | {error, Reason}</name> + <name since="">delete_user(UserName, Address, Port, Dir) -> true | {error, Reason}</name> <fsummary>Deletes a user from the user database.</fsummary> <type> <v>UserName = string()</v> @@ -166,9 +166,9 @@ </func> <func> - <name>get_user(UserName,Options) -> {ok, #httpd_user} |{error, Reason}</name> - <name>get_user(UserName, Port, Dir) -> {ok, #httpd_user} | {error, Reason}</name> - <name>get_user(UserName, Address, Port, Dir) -> {ok, #httpd_user} | {error, Reason}</name> + <name since="">get_user(UserName,Options) -> {ok, #httpd_user} |{error, Reason}</name> + <name since="">get_user(UserName, Port, Dir) -> {ok, #httpd_user} | {error, Reason}</name> + <name since="">get_user(UserName, Address, Port, Dir) -> {ok, #httpd_user} | {error, Reason}</name> <fsummary>Returns a user from the user database.</fsummary> <type> <v>UserName = string()</v> @@ -190,9 +190,9 @@ </func> <func> - <name>list_groups(Options) -> {ok, Groups} | {error, Reason}</name> - <name>list_groups(Port, Dir) -> {ok, Groups} | {error, Reason}</name> - <name>list_groups(Address, Port, Dir) -> {ok, Groups} | {error, Reason}</name> + <name since="">list_groups(Options) -> {ok, Groups} | {error, Reason}</name> + <name since="">list_groups(Port, Dir) -> {ok, Groups} | {error, Reason}</name> + <name since="">list_groups(Address, Port, Dir) -> {ok, Groups} | {error, Reason}</name> <fsummary>Lists all the groups.</fsummary> <type> <v>Options = [Option]</v> @@ -214,9 +214,9 @@ </func> <func> - <name>list_group_members(GroupName, Options) -> {ok, Users} | {error, Reason}</name> - <name>list_group_members(GroupName, Port, Dir) -> {ok, Users} | {error, Reason}</name> - <name>list_group_members(GroupName, Address, Port, Dir) -> {ok, Users} | {error, Reason}</name> + <name since="">list_group_members(GroupName, Options) -> {ok, Users} | {error, Reason}</name> + <name since="">list_group_members(GroupName, Port, Dir) -> {ok, Users} | {error, Reason}</name> + <name since="">list_group_members(GroupName, Address, Port, Dir) -> {ok, Users} | {error, Reason}</name> <fsummary>Lists the members of a group.</fsummary> <type> <v>GroupName = string()</v> @@ -240,9 +240,9 @@ </func> <func> - <name>list_users(Options) -> {ok, Users} | {error, Reason}</name> - <name>list_users(Port, Dir) -> {ok, Users} | {error, Reason}</name> - <name>list_users(Address, Port, Dir) -> {ok, Users} | {error, Reason}</name> + <name since="">list_users(Options) -> {ok, Users} | {error, Reason}</name> + <name since="OTP R14B01">list_users(Port, Dir) -> {ok, Users} | {error, Reason}</name> + <name since="">list_users(Address, Port, Dir) -> {ok, Users} | {error, Reason}</name> <fsummary>Lists users in the user database.</fsummary> <type> <v>Options = [Option]</v> @@ -264,8 +264,8 @@ </func> <func> - <name>update_password(Port, Dir, OldPassword, NewPassword, NewPassword) -> ok | {error, Reason}</name> - <name>update_password(Address,Port, Dir, OldPassword, NewPassword, NewPassword) -> ok | {error, Reason}</name> + <name since="">update_password(Port, Dir, OldPassword, NewPassword, NewPassword) -> ok | {error, Reason}</name> + <name since="">update_password(Address,Port, Dir, OldPassword, NewPassword, NewPassword) -> ok | {error, Reason}</name> <fsummary>Changes <c>AuthAcessPassword</c>.</fsummary> <type> <v>Port = integer()</v> diff --git a/lib/inets/doc/src/mod_esi.xml b/lib/inets/doc/src/mod_esi.xml index ede7dc8f7d..bc5f98068f 100644 --- a/lib/inets/doc/src/mod_esi.xml +++ b/lib/inets/doc/src/mod_esi.xml @@ -25,7 +25,7 @@ <title>mod_esi</title> <file>mod_esi.sgml</file> </header> - <module>mod_esi</module> + <module since="">mod_esi</module> <modulesummary>Erlang Server Interface</modulesummary> <description> <p>This module defines the Erlang Server Interface (ESI) API. @@ -88,7 +88,7 @@ <funcs> <func> - <name>deliver(SessionID, Data) -> ok | {error, Reason}</name> + <name since="">deliver(SessionID, Data) -> ok | {error, Reason}</name> <fsummary>Sends <c>Data</c> back to client.</fsummary> <type> <v>SessionID = term()</v> @@ -121,7 +121,7 @@ <funcs> <func> - <name>Module:Function(SessionID, Env, Input)-> {continue, State} | _ </name> + <name since="">Module:Function(SessionID, Env, Input)-> {continue, State} | _ </name> <fsummary>Creates a dynamic web page and returns it chunk by chunk to the server process by calling <c>mod_esi:deliver/2</c>.</fsummary> <type> @@ -179,7 +179,7 @@ </func> <func> - <name>Module:Function(Env, Input)-> Response </name> + <name since="">Module:Function(Env, Input)-> Response </name> <fsummary>Creates a dynamic web page and returns it as a list. This function is deprecated and is only kept for backwards compatibility.</fsummary> <type> diff --git a/lib/inets/doc/src/mod_security.xml b/lib/inets/doc/src/mod_security.xml index 6f3f3c048a..c26d7468c2 100644 --- a/lib/inets/doc/src/mod_security.xml +++ b/lib/inets/doc/src/mod_security.xml @@ -29,7 +29,7 @@ <rev>1.0</rev> <file>mod_security.sgml</file> </header> - <module>mod_security</module> + <module since="">mod_security</module> <modulesummary>Security Audit and Trailing Functionality</modulesummary> <description> <p>Security Audit and Trailing Functionality</p> @@ -37,8 +37,8 @@ <funcs> <func> - <name>block_user(User, Port, Dir, Seconds) -> true | {error, Reason}</name> - <name>block_user(User, Address, Port, Dir, Seconds) -> true | {error, Reason}</name> + <name since="">block_user(User, Port, Dir, Seconds) -> true | {error, Reason}</name> + <name since="">block_user(User, Address, Port, Dir, Seconds) -> true | {error, Reason}</name> <fsummary>Blocks a user from access to a directory for a certain amount of time.</fsummary> <type> <v>User = string()</v> @@ -56,10 +56,10 @@ </func> <func> - <name>list_auth_users(Port) -> Users | []</name> - <name>list_auth_users(Address, Port) -> Users | []</name> - <name>list_auth_users(Port, Dir) -> Users | []</name> - <name>list_auth_users(Address, Port, Dir) -> Users | []</name> + <name since="">list_auth_users(Port) -> Users | []</name> + <name since="">list_auth_users(Address, Port) -> Users | []</name> + <name since="">list_auth_users(Port, Dir) -> Users | []</name> + <name since="">list_auth_users(Address, Port, Dir) -> Users | []</name> <fsummary>Lists users that have authenticated within the <c>SecurityAuthTimeout</c> time for a given address (if specified), port number, and directory (if specified).</fsummary> @@ -77,10 +77,10 @@ </desc> </func> <func> - <name>list_blocked_users(Port) -> Users | []</name> - <name>list_blocked_users(Address, Port) -> Users | []</name> - <name>list_blocked_users(Port, Dir) -> Users | []</name> - <name>list_blocked_users(Address, Port, Dir) -> Users | []</name> + <name since="">list_blocked_users(Port) -> Users | []</name> + <name since="">list_blocked_users(Address, Port) -> Users | []</name> + <name since="">list_blocked_users(Port, Dir) -> Users | []</name> + <name since="">list_blocked_users(Address, Port, Dir) -> Users | []</name> <fsummary>Lists users that are currently blocked from access to a specified port number, for a given address (if specified).</fsummary> <type> @@ -97,10 +97,10 @@ </func> <func> - <name>unblock_user(User, Port) -> true | {error, Reason}</name> - <name>unblock_user(User, Address, Port) -> true | {error, Reason}</name> - <name>unblock_user(User, Port, Dir) -> true | {error, Reason}</name> - <name>unblock_user(User, Address, Port, Dir) -> true | {error, Reason}</name> + <name since="">unblock_user(User, Port) -> true | {error, Reason}</name> + <name since="">unblock_user(User, Address, Port) -> true | {error, Reason}</name> + <name since="">unblock_user(User, Port, Dir) -> true | {error, Reason}</name> + <name since="">unblock_user(User, Address, Port, Dir) -> true | {error, Reason}</name> <fsummary>Removes a blocked user from the block list.</fsummary> <type> <v>User = string()</v> @@ -129,8 +129,8 @@ <funcs> <func> - <name>Module:event(What, Port, Dir, Data) -> ignored</name> - <name>Module:event(What, Address, Port, Dir, Data) -> ignored</name> + <name since="OTP 18.1">Module:event(What, Port, Dir, Data) -> ignored</name> + <name since="OTP 18.1">Module:event(What, Address, Port, Dir, Data) -> ignored</name> <fsummary>Called whenever an event occurs in <c>mod_security</c>.</fsummary> <type> <v>What = atom()</v> diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml index e34dd78a2a..31dae6317e 100644 --- a/lib/inets/doc/src/notes.xml +++ b/lib/inets/doc/src/notes.xml @@ -33,7 +33,71 @@ <file>notes.xml</file> </header> - <section><title>Inets 7.0.2</title> + <section><title>Inets 7.0.5</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed bug that causes a crash in http client when using + hostnames (e.g. localhost) with the the option + ipv6_host_with_brackets set to true.</p> + <p> + This change also fixes a regression: httpc:request fails + with connection error (nxdomain) if option + ipv6_host_with_brackets set to true and host component of + the URI is an IPv6 address.</p> + <p> + Own Id: OTP-15554 Aux Id: ERIERL-289 </p> + </item> + </list> + </section> + +</section> + +<section><title>Inets 7.0.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Make sure ipv6 addresses with brackets in URIs are + converted correctly before passing to lower level + functions like gen_tcp and ssl functions. Could cause + connection to fail.</p> + <p> + Own Id: OTP-15544 Aux Id: ERIERL-289 </p> + </item> + </list> + </section> + +</section> + +<section><title>Inets 7.0.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed http client to not send 'content-length' header in + chunked encoded requests.</p> + <p> + Own Id: OTP-15338 Aux Id: ERL-733 </p> + </item> + <item> + <p> + Fixed http client to not drop explicit 'Content-Type' + header in requests without a body such as requests with + the 'Content-Type' of application/x-www-form-urlencoded.</p> + <p> + Own Id: OTP-15339 Aux Id: ERL-736 </p> + </item> + </list> + </section> + +</section> + +<section><title>Inets 7.0.2</title> <section><title>Fixed Bugs and Malfunctions</title> <list> diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl index 1bf5d25c98..8d443a1477 100644 --- a/lib/inets/src/http_client/httpc_handler.erl +++ b/lib/inets/src/http_client/httpc_handler.erl @@ -809,7 +809,7 @@ connect_and_send_first_request(Address, Request, #state{options = Options0} = St SocketType = socket_type(Request), ConnTimeout = (Request#request.settings)#http_options.connect_timeout, Options = handle_unix_socket_options(Request, Options0), - case connect(SocketType, Address, Options, ConnTimeout) of + case connect(SocketType, format_address(Address), Options, ConnTimeout) of {ok, Socket} -> ClientClose = httpc_request:is_client_closing( @@ -1738,4 +1738,8 @@ update_session(ProfileName, #session{id = SessionId} = Session, Pos, Value) -> {stacktrace, Stacktrace}]}} end. - +format_address({[$[|T], Port}) -> + {ok, Address} = inet:parse_address(string:strip(T, right, $])), + {Address, Port}; +format_address(HostPort) -> + HostPort. diff --git a/lib/inets/test/httpd_bench_SUITE.erl b/lib/inets/test/httpd_bench_SUITE.erl index 4b549dcb5b..087516f56c 100644 --- a/lib/inets/test/httpd_bench_SUITE.erl +++ b/lib/inets/test/httpd_bench_SUITE.erl @@ -37,7 +37,8 @@ %% Common Test interface functions ----------------------------------- %%-------------------------------------------------------------------- suite() -> - [{ct_hooks,[{ts_install_cth,[{nodenames,2}]}]}]. + [{timetrap, {minutes, 1}}, + {ct_hooks,[{ts_install_cth,[{nodenames,2}]}]}]. all() -> [ @@ -499,8 +500,8 @@ start_dummy("http"= Protocol, Config) -> Conf = [ %%{big, filename:join(DataDir, "1M_file")}, %%{small, filename:join(DataDir, "1k_file")}, - {big, {gen, crypto:rand_bytes(1000000)}}, - {small, {gen, crypto:rand_bytes(1000)}}, + {big, {gen, crypto:strong_rand_bytes(1000000)}}, + {small, {gen, crypto:strong_rand_bytes(1000)}}, {http_version, HTTPVersion}, {keep_alive, ?config(keep_alive, Config)} ], @@ -519,8 +520,8 @@ start_dummy("https" = Protocol, Config) -> Opts = [{active, true}, {nodelay, true}, {reuseaddr, true} | SSLOpts], Conf = [%%{big, filename:join(DataDir, "1M_file")}, %%{small, filename:join(DataDir, "1k_file")}, - {big, {gen, crypto:rand_bytes(1000000)}}, - {small, {gen, crypto:rand_bytes(1000)}}, + {big, {gen, crypto:strong_rand_bytes(1000000)}}, + {small, {gen, crypto:strong_rand_bytes(1000)}}, {http_version, HTTPVersion}, {keep_alive, ?config(keep_alive, Config)} ], diff --git a/lib/inets/vsn.mk b/lib/inets/vsn.mk index 26adb854e1..921161dce1 100644 --- a/lib/inets/vsn.mk +++ b/lib/inets/vsn.mk @@ -19,6 +19,6 @@ # %CopyrightEnd% APPLICATION = inets -INETS_VSN = 7.0.2 +INETS_VSN = 7.0.5 PRE_VSN = APP_VSN = "$(APPLICATION)-$(INETS_VSN)$(PRE_VSN)" |