From 94254dfffa9cb4b53a95873e1fbbbce4ce7049ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Dimitrov?= Date: Thu, 18 Apr 2019 14:51:50 +0200 Subject: ssl: Add type specs for http_packet() Change-Id: I07231ceab14d49c740967a0edfc9494328b96a62 --- lib/ssl/doc/src/ssl.xml | 40 +++++++++++++++++++++++++++ lib/ssl/src/ssl.erl | 72 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 110 insertions(+), 2 deletions(-) (limited to 'lib/ssl') diff --git a/lib/ssl/doc/src/ssl.xml b/lib/ssl/doc/src/ssl.xml index 69ab522da6..422bd6a19d 100644 --- a/lib/ssl/doc/src/ssl.xml +++ b/lib/ssl/doc/src/ssl.xml @@ -264,6 +264,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TLS/DTLS OPTION DESCRIPTIONS - COMMON for SERVER and CLIENT diff --git a/lib/ssl/src/ssl.erl b/lib/ssl/src/ssl.erl index f8aaf0b736..ef2cd4f557 100644 --- a/lib/ssl/src/ssl.erl +++ b/lib/ssl/src/ssl.erl @@ -244,6 +244,74 @@ bad_certificate_hash_value | unknown_psk_identity | no_application_protocol. +-type http_packet() :: http_request() | + http_response() | + http_header() | + http_eoh | + http_error(). +-type http_request() :: {http_request, http_method(), http_uri(), http_version()}. +-type http_response() :: {http_response, http_version(), integer(), http_string()}. +-type http_header() :: {http_header, integer(), http_field(), Reserved :: term(), + Value :: http_string()}. +-type http_error() :: {http_error, http_string()}. +-type http_method() :: 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE'. +-type http_uri() :: any(). +-type http_version() :: {Major :: integer(), Minor :: integer()}. +-type http_field() :: 'Cache-Control' | + 'Connection' | + 'Date' | + 'Pragma' | + 'Transfer-Encoding' | + 'Upgrade' | + 'Via' | + 'Accept' | + 'Accept-Charset' | + 'Accept-Encoding' | + 'Accept-Language' | + 'Authorization' | + 'From' | + 'Host' | + 'If-Modified-Since' | + 'If-Match' | + 'If-None-Match' | + 'If-Range' | + 'If-Unmodified-Since' | + 'Max-Forwards' | + 'Proxy-Authorization' | + 'Range' | + 'Referer' | + 'User-Agent' | + 'Age' | + 'Location' | + 'Proxy-Authenticate' | + 'Public' | + 'Retry-After' | + 'Server' | + 'Vary' | + 'Warning' | + 'Www-Authenticate' | + 'Allow' | + 'Content-Base' | + 'Content-Encoding' | + 'Content-Language' | + 'Content-Length' | + 'Content-Location' | + 'Content-Md5' | + 'Content-Range' | + 'Content-Type' | + 'Etag' | + 'Expires' | + 'Last-Modified' | + 'Accept-Ranges' | + 'Set-Cookie' | + 'Set-Cookie2' | + 'X-Forwarded-For' | + 'Cookie' | + 'Keep-Alive' | + 'Proxy-Connection' | + http_string(). +-type http_string() :: string() | binary(). + %% ------------------------------------------------------------------------------------------------------- -type common_option() :: {protocol, protocol()} | {handshake, handshake_completion()} | @@ -773,7 +841,7 @@ send(#sslsocket{pid = {ListenSocket, #config{transport_info = Info}}}, Data) -> -spec recv(SslSocket, Length) -> {ok, Data} | {error, reason()} when SslSocket :: sslsocket(), Length :: integer(), - Data :: binary() | list(). + Data :: binary() | list() | http_packet(). recv(Socket, Length) -> recv(Socket, Length, infinity). @@ -781,7 +849,7 @@ recv(Socket, Length) -> -spec recv(SslSocket, Length, Timeout) -> {ok, Data} | {error, reason()} when SslSocket :: sslsocket(), Length :: integer(), - Data :: binary() | list(), + Data :: binary() | list() | http_packet(), Timeout :: timeout(). recv(#sslsocket{pid = [Pid|_]}, Length, Timeout) when is_pid(Pid), -- cgit v1.2.3