Skip to content

Commit 8bb529e

Browse files
committed
bump to 0.16.0
1 parent c95eb23 commit 8bb529e

14 files changed

+248
-34
lines changed

NEWS.md

+27-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,38 @@
11
# NEWS
22

3+
1.16.0 - 2020-05-25
4+
-------------------
5+
6+
7+
- pool: cache connection IDs
8+
- pool; make sure to reuse a connection if the options match the one given in the request. fix usage with proxy and ssl
9+
connections
10+
- url: handle fragment correctly, a fragment is parsed first to not be mistaken with an URL
11+
- ssl: fix validation with Erlang 19 & Erlang 20
12+
- ssl: handle tlsv1.3 on Erlang OTP 23
13+
- ssl: increase validation depth to match openssl default
14+
- ssl: optimiaz partial chain handling
15+
- ssl: fix hostname checking and correctly handle SNI
16+
- ssl: fix ciphers
17+
- request: fix regression with fully fqdn
18+
- ssl: fix usage with OTP 23
19+
- url: decode username/password for basic auth parameters
20+
- request: do not normalize when converting relative redirect to absolute
21+
- ssl: update to certifi 2.5.2
22+
- request: handle Connection: close response header for stteam
23+
- http: handle leading new lines in HTTP messages
24+
- http: handle trailers in persistent connection
25+
- pool: update pool timeout docummentation
26+
- url: fix urlencode
27+
328
1.15.2 - 2019-09-25
429
-------------------
530

631
- doc: fix tes run example in readme
7-
- fix: hackney stream, send `hackney_response` before calling `handle_error`
32+
- fix: hackney stream, send `hackney_response` before calling `handle_error`
833
- fix: error remove ssl `honor_cipher_order` option
934
- doc: document self-signed certificate usage
10-
- bump `ssl_verify_fun` to 1.1.5
35+
- bump `ssl_verify_fun` to 1.1.5
1136
- fix: don't use default pool if set to false
1237
- fix: `hackney_headers_new:store/3` fix value appending to a list
1338
- fix: miscellaeous specs

README.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Copyright (c) 2012-2020 Benoît Chesneau.
66

7-
__Version:__ 1.15.2
7+
__Version:__ 1.16.0
88

99
# hackney
1010

@@ -365,8 +365,7 @@ Options = [{timeout, 150000}, {max_connections, 100}],
365365
ok = hackney_pool:start_pool(PoolName, Options),
366366
```
367367

368-
`timeout` is the connection idle timeout. Connection will be closed and removed from the pool after this.
369-
368+
`timeout` is the time we keep the connection alive in the pool,
370369
`max_connections` is the number of connections maintained in the pool. Each
371370
connection in a pool is monitored and closed connections are removed
372371
automatically.
@@ -580,6 +579,8 @@ $ kill `cat httpbin.pid`
580579
<tr><td><a href="https://github.com/benoitc/hackney/blob/master/doc/hackney_app.md" class="module">hackney_app</a></td></tr>
581580
<tr><td><a href="https://github.com/benoitc/hackney/blob/master/doc/hackney_bstr.md" class="module">hackney_bstr</a></td></tr>
582581
<tr><td><a href="https://github.com/benoitc/hackney/blob/master/doc/hackney_connect.md" class="module">hackney_connect</a></td></tr>
582+
<tr><td><a href="https://github.com/benoitc/hackney/blob/master/doc/hackney_connection.md" class="module">hackney_connection</a></td></tr>
583+
<tr><td><a href="https://github.com/benoitc/hackney/blob/master/doc/hackney_connections.md" class="module">hackney_connections</a></td></tr>
583584
<tr><td><a href="https://github.com/benoitc/hackney/blob/master/doc/hackney_cookie.md" class="module">hackney_cookie</a></td></tr>
584585
<tr><td><a href="https://github.com/benoitc/hackney/blob/master/doc/hackney_date.md" class="module">hackney_date</a></td></tr>
585586
<tr><td><a href="https://github.com/benoitc/hackney/blob/master/doc/hackney_headers.md" class="module">hackney_headers</a></td></tr>

doc/README.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
# hackney - HTTP client library in Erlang #
44

5-
Copyright (c) 2012-2019 Benoît Chesneau.
5+
Copyright (c) 2012-2020 Benoît Chesneau.
66

7-
__Version:__ 1.15.2
7+
__Version:__ 1.16.0
88

99
# hackney
1010

@@ -579,6 +579,8 @@ $ kill `cat httpbin.pid`
579579
<tr><td><a href="hackney_app.md" class="module">hackney_app</a></td></tr>
580580
<tr><td><a href="hackney_bstr.md" class="module">hackney_bstr</a></td></tr>
581581
<tr><td><a href="hackney_connect.md" class="module">hackney_connect</a></td></tr>
582+
<tr><td><a href="hackney_connection.md" class="module">hackney_connection</a></td></tr>
583+
<tr><td><a href="hackney_connections.md" class="module">hackney_connections</a></td></tr>
582584
<tr><td><a href="hackney_cookie.md" class="module">hackney_cookie</a></td></tr>
583585
<tr><td><a href="hackney_date.md" class="module">hackney_date</a></td></tr>
584586
<tr><td><a href="hackney_headers.md" class="module">hackney_headers</a></td></tr>

doc/edoc-info

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
%% encoding: UTF-8
22
{application,hackney}.
3-
{modules,[hackney,hackney_app,hackney_bstr,hackney_connect,hackney_cookie,
4-
hackney_date,hackney_headers,hackney_headers_new,hackney_http,
5-
hackney_http_connect,hackney_local_tcp,hackney_manager,
6-
hackney_metrics,hackney_multipart,hackney_pool,hackney_pool_handler,
7-
hackney_request,hackney_response,hackney_socks5,hackney_ssl,
8-
hackney_stream,hackney_sup,hackney_tcp,hackney_trace,hackney_url,
9-
hackney_util]}.
3+
{modules,[hackney,hackney_app,hackney_bstr,hackney_connect,hackney_connection,
4+
hackney_connections,hackney_cookie,hackney_date,hackney_headers,
5+
hackney_headers_new,hackney_http,hackney_http_connect,
6+
hackney_local_tcp,hackney_manager,hackney_metrics,hackney_multipart,
7+
hackney_pool,hackney_pool_handler,hackney_request,hackney_response,
8+
hackney_socks5,hackney_ssl,hackney_stream,hackney_sup,hackney_tcp,
9+
hackney_trace,hackney_url,hackney_util]}.

doc/hackney_connect.md

+1-13
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
## Function Index ##
1010

1111

12-
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#check_or_close-1">check_or_close/1</a></td><td></td></tr><tr><td valign="top"><a href="#close-1">close/1</a></td><td>close the client.</td></tr><tr><td valign="top"><a href="#connect-3">connect/3</a></td><td></td></tr><tr><td valign="top"><a href="#connect-4">connect/4</a></td><td></td></tr><tr><td valign="top"><a href="#connect-5">connect/5</a></td><td></td></tr><tr><td valign="top"><a href="#create_connection-4">create_connection/4</a></td><td>create a connection and return a client state.</td></tr><tr><td valign="top"><a href="#create_connection-5">create_connection/5</a></td><td></td></tr><tr><td valign="top"><a href="#is_pool-1">is_pool/1</a></td><td>get current pool pid or name used by a client if needed.</td></tr><tr><td valign="top"><a href="#maybe_connect-1">maybe_connect/1</a></td><td>connect a socket and create a client state.</td></tr><tr><td valign="top"><a href="#partial_chain-1">partial_chain/1</a></td><td></td></tr><tr><td valign="top"><a href="#peername-1">peername/1</a></td><td>get the address and port for the other end of current connection in the client.</td></tr><tr><td valign="top"><a href="#reconnect-4">reconnect/4</a></td><td></td></tr><tr><td valign="top"><a href="#set_sockopts-2">set_sockopts/2</a></td><td>add set sockets options in the client.</td></tr><tr><td valign="top"><a href="#sockname-1">sockname/1</a></td><td>the local address and port of current socket in the client.</td></tr><tr><td valign="top"><a href="#ssl_opts-2">ssl_opts/2</a></td><td></td></tr></table>
12+
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#check_or_close-1">check_or_close/1</a></td><td></td></tr><tr><td valign="top"><a href="#close-1">close/1</a></td><td>close the client.</td></tr><tr><td valign="top"><a href="#connect-3">connect/3</a></td><td></td></tr><tr><td valign="top"><a href="#connect-4">connect/4</a></td><td></td></tr><tr><td valign="top"><a href="#connect-5">connect/5</a></td><td></td></tr><tr><td valign="top"><a href="#create_connection-4">create_connection/4</a></td><td>create a connection and return a client state.</td></tr><tr><td valign="top"><a href="#create_connection-5">create_connection/5</a></td><td></td></tr><tr><td valign="top"><a href="#is_pool-1">is_pool/1</a></td><td>get current pool pid or name used by a client if needed.</td></tr><tr><td valign="top"><a href="#maybe_connect-1">maybe_connect/1</a></td><td>connect a socket and create a client state.</td></tr><tr><td valign="top"><a href="#peername-1">peername/1</a></td><td>get the address and port for the other end of current connection in the client.</td></tr><tr><td valign="top"><a href="#reconnect-4">reconnect/4</a></td><td></td></tr><tr><td valign="top"><a href="#set_sockopts-2">set_sockopts/2</a></td><td>add set sockets options in the client.</td></tr><tr><td valign="top"><a href="#sockname-1">sockname/1</a></td><td>the local address and port of current socket in the client.</td></tr></table>
1313

1414

1515
<a name="functions"></a>
@@ -78,12 +78,6 @@ get current pool pid or name used by a client if needed
7878

7979
connect a socket and create a client state.
8080

81-
<a name="partial_chain-1"></a>
82-
83-
### partial_chain/1 ###
84-
85-
`partial_chain(Certs) -> any()`
86-
8781
<a name="peername-1"></a>
8882

8983
### peername/1 ###
@@ -114,9 +108,3 @@ add set sockets options in the client
114108

115109
the local address and port of current socket in the client
116110

117-
<a name="ssl_opts-2"></a>
118-
119-
### ssl_opts/2 ###
120-
121-
`ssl_opts(Host, Options) -> any()`
122-

doc/hackney_connection.md

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
2+
3+
# Module hackney_connection #
4+
* [Function Index](#index)
5+
* [Function Details](#functions)
6+
7+
<a name="index"></a>
8+
9+
## Function Index ##
10+
11+
12+
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#close-2">close/2</a></td><td></td></tr><tr><td valign="top"><a href="#connect-3">connect/3</a></td><td></td></tr><tr><td valign="top"><a href="#connect_options-3">connect_options/3</a></td><td></td></tr><tr><td valign="top"><a href="#controlling_process-3">controlling_process/3</a></td><td></td></tr><tr><td valign="top"><a href="#get_property-2">get_property/2</a></td><td></td></tr><tr><td valign="top"><a href="#is_ssl-1">is_ssl/1</a></td><td></td></tr><tr><td valign="top"><a href="#new-1">new/1</a></td><td></td></tr><tr><td valign="top"><a href="#setopts-3">setopts/3</a></td><td></td></tr><tr><td valign="top"><a href="#ssl_opts-2">ssl_opts/2</a></td><td></td></tr><tr><td valign="top"><a href="#sync_socket-2">sync_socket/2</a></td><td></td></tr></table>
13+
14+
15+
<a name="functions"></a>
16+
17+
## Function Details ##
18+
19+
<a name="close-2"></a>
20+
21+
### close/2 ###
22+
23+
`close(Connection, Socket) -> any()`
24+
25+
<a name="connect-3"></a>
26+
27+
### connect/3 ###
28+
29+
`connect(Connection, ConnectOptions, Timeout) -> any()`
30+
31+
<a name="connect_options-3"></a>
32+
33+
### connect_options/3 ###
34+
35+
`connect_options(Transport, Host, ClientOptions) -> any()`
36+
37+
<a name="controlling_process-3"></a>
38+
39+
### controlling_process/3 ###
40+
41+
`controlling_process(Connection, Socket, Owner) -> any()`
42+
43+
<a name="get_property-2"></a>
44+
45+
### get_property/2 ###
46+
47+
`get_property(X1, Connection) -> any()`
48+
49+
<a name="is_ssl-1"></a>
50+
51+
### is_ssl/1 ###
52+
53+
`is_ssl(Connection) -> any()`
54+
55+
<a name="new-1"></a>
56+
57+
### new/1 ###
58+
59+
`new(Client) -> any()`
60+
61+
<a name="setopts-3"></a>
62+
63+
### setopts/3 ###
64+
65+
`setopts(Connection, Socket, Opts) -> any()`
66+
67+
<a name="ssl_opts-2"></a>
68+
69+
### ssl_opts/2 ###
70+
71+
`ssl_opts(Host, Options) -> any()`
72+
73+
<a name="sync_socket-2"></a>
74+
75+
### sync_socket/2 ###
76+
77+
`sync_socket(Connection, Socket) -> any()`
78+

doc/hackney_connections.md

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
2+
3+
# Module hackney_connections #
4+
* [Function Index](#index)
5+
* [Function Details](#functions)
6+
7+
__Behaviours:__ [`gen_server`](gen_server.md).
8+
9+
<a name="index"></a>
10+
11+
## Function Index ##
12+
13+
14+
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr><tr><td valign="top"><a href="#delete-1">delete/1</a></td><td></td></tr><tr><td valign="top"><a href="#get_num_entries-0">get_num_entries/0</a></td><td></td></tr><tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr><tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr><tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr><tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr><tr><td valign="top"><a href="#insert-2">insert/2</a></td><td></td></tr><tr><td valign="top"><a href="#lookup-1">lookup/1</a></td><td></td></tr><tr><td valign="top"><a href="#start_link-0">start_link/0</a></td><td></td></tr><tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr></table>
15+
16+
17+
<a name="functions"></a>
18+
19+
## Function Details ##
20+
21+
<a name="code_change-3"></a>
22+
23+
### code_change/3 ###
24+
25+
`code_change(OldVsn, State, Extra) -> any()`
26+
27+
<a name="delete-1"></a>
28+
29+
### delete/1 ###
30+
31+
`delete(Key) -> any()`
32+
33+
<a name="get_num_entries-0"></a>
34+
35+
### get_num_entries/0 ###
36+
37+
`get_num_entries() -> any()`
38+
39+
<a name="handle_call-3"></a>
40+
41+
### handle_call/3 ###
42+
43+
`handle_call(Msg, From, State) -> any()`
44+
45+
<a name="handle_cast-2"></a>
46+
47+
### handle_cast/2 ###
48+
49+
`handle_cast(Msg, State) -> any()`
50+
51+
<a name="handle_info-2"></a>
52+
53+
### handle_info/2 ###
54+
55+
`handle_info(Info, State) -> any()`
56+
57+
<a name="init-1"></a>
58+
59+
### init/1 ###
60+
61+
`init(X1) -> any()`
62+
63+
<a name="insert-2"></a>
64+
65+
### insert/2 ###
66+
67+
`insert(Key, Id) -> any()`
68+
69+
<a name="lookup-1"></a>
70+
71+
### lookup/1 ###
72+
73+
`lookup(Key) -> any()`
74+
75+
<a name="start_link-0"></a>
76+
77+
### start_link/0 ###
78+
79+
`start_link() -> any()`
80+
81+
<a name="terminate-2"></a>
82+
83+
### terminate/2 ###
84+
85+
`terminate(Reason, State) -> any()`
86+

doc/hackney_pool.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ release a socket in the pool
3434

3535
### checkout/4 ###
3636

37-
`checkout(Host0, Port, Transport, Client) -> any()`
37+
`checkout(Host, Port, Transport, Client) -> any()`
3838

3939
fetch a socket from the pool
4040

doc/hackney_ssl.md

+19-1
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,31 @@
99
## Function Index ##
1010

1111

12-
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#close-1">close/1</a></td><td>Close a TCP socket.</td></tr><tr><td valign="top"><a href="#connect-3">connect/3</a></td><td></td></tr><tr><td valign="top"><a href="#connect-4">connect/4</a></td><td></td></tr><tr><td valign="top"><a href="#controlling_process-2">controlling_process/2</a></td><td>Assign a new controlling process <em>Pid</em> to <em>Socket</em>.</td></tr><tr><td valign="top"><a href="#messages-1">messages/1</a></td><td>Atoms used to identify messages in {active, once | true} mode.</td></tr><tr><td valign="top"><a href="#peername-1">peername/1</a></td><td>Return the address and port for the other end of a connection.</td></tr><tr><td valign="top"><a href="#recv-2">recv/2</a></td><td></td></tr><tr><td valign="top"><a href="#recv-3">recv/3</a></td><td>Receive a packet from a socket in passive mode.</td></tr><tr><td valign="top"><a href="#send-2">send/2</a></td><td>Send a packet on a socket.</td></tr><tr><td valign="top"><a href="#setopts-2">setopts/2</a></td><td>Set one or more options for a socket.</td></tr><tr><td valign="top"><a href="#shutdown-2">shutdown/2</a></td><td>Immediately close a socket in one or two directions.</td></tr><tr><td valign="top"><a href="#sockname-1">sockname/1</a></td><td>Get the local address and port of a socket.</td></tr></table>
12+
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#check_hostname_opts-1">check_hostname_opts/1</a></td><td></td></tr><tr><td valign="top"><a href="#cipher_opts-0">cipher_opts/0</a></td><td></td></tr><tr><td valign="top"><a href="#cipher_opts-0">cipher_opts/0</a></td><td></td></tr><tr><td valign="top"><a href="#close-1">close/1</a></td><td>Close a TCP socket.</td></tr><tr><td valign="top"><a href="#connect-3">connect/3</a></td><td></td></tr><tr><td valign="top"><a href="#connect-4">connect/4</a></td><td></td></tr><tr><td valign="top"><a href="#controlling_process-2">controlling_process/2</a></td><td>Assign a new controlling process <em>Pid</em> to <em>Socket</em>.</td></tr><tr><td valign="top"><a href="#messages-1">messages/1</a></td><td>Atoms used to identify messages in {active, once | true} mode.</td></tr><tr><td valign="top"><a href="#peername-1">peername/1</a></td><td>Return the address and port for the other end of a connection.</td></tr><tr><td valign="top"><a href="#recv-2">recv/2</a></td><td></td></tr><tr><td valign="top"><a href="#recv-3">recv/3</a></td><td>Receive a packet from a socket in passive mode.</td></tr><tr><td valign="top"><a href="#send-2">send/2</a></td><td>Send a packet on a socket.</td></tr><tr><td valign="top"><a href="#setopts-2">setopts/2</a></td><td>Set one or more options for a socket.</td></tr><tr><td valign="top"><a href="#shutdown-2">shutdown/2</a></td><td>Immediately close a socket in one or two directions.</td></tr><tr><td valign="top"><a href="#sockname-1">sockname/1</a></td><td>Get the local address and port of a socket.</td></tr></table>
1313

1414

1515
<a name="functions"></a>
1616

1717
## Function Details ##
1818

19+
<a name="check_hostname_opts-1"></a>
20+
21+
### check_hostname_opts/1 ###
22+
23+
`check_hostname_opts(Host0) -> any()`
24+
25+
<a name="cipher_opts-0"></a>
26+
27+
### cipher_opts/0 ###
28+
29+
`cipher_opts() -> any()`
30+
31+
<a name="cipher_opts-0"></a>
32+
33+
### cipher_opts/0 ###
34+
35+
`cipher_opts() -> any()`
36+
1937
<a name="close-1"></a>
2038

2139
### close/1 ###

0 commit comments

Comments
 (0)