forked from hirotnk/lhttpc
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGELOG
207 lines (167 loc) · 7.46 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
Version 1.17.1
* Eliminate some socket operations to reduce contention.
* No longer use {active, once} to eagerly discover closed sockets. This
means that if the socket is closed remotely we won't notice until we try
to use it, but lhttpc_client already has retry logic to deal with this
situation.
* No longer transfer ownership of socket to client on checkout. Since the
client never sets the socket to active we don't need to worry about
socket-related message delivery and it isn't necessary.
* Eliminate the use of timers to close idle sockets.
Version 1.16.0
* Use multiple load balancers for large connection pools.
* Close expiring sockets in the client so that other requests on that same
connection pool are not blocked.
Version 1.15.0
* Add stats_fun option to lhttpc:request.
Version 1.14.4
* Define and use lhttpc_stats record in lhttpc_dns.
Version 1.14.3
* Fix handling of URLs with query with empty path.
Version 1.14.2
* Update lhttpc_dns:print_tcpdump_hosts/1 output to remove unnecessary
backslashes.
Version 1.14.1
* Add 20% jitter to connection_lifetime.
Version 1.14.0
* More lhttpc_dns heuristic changes for when the DNS resolver returns
different subsets of a larger set of IP addresses on each lookup.
Version 1.13.0
* Set the SNI (server name indication) TLS extension for SSL connections.
Version 1.12.0:
* Add special handling to lhttpc_dns for providers that return a subset of a
larger pool of IP addresses in their DNS responses.
Version 1.11.1:
* The lhttpc_dns:check_table should not create the lhttpd_dns table if it
doesn't exist.
Version 1.11.0:
* Add lhttpc_stats:enable_stats/1 function to allow turning stats collection
on or off without restarting the application.
Version 1.10.3:
* Fix a crash in lhttpc_stats that can happen when a PID has more than one
socket. This error points to an unfixed bug in the lhttpc_stats connection
tracking, but we don't want to crash.
Version 1.10.2:
* Update a pool's max_connections on each call, and apply max_connections when
returning a socket to the connection pool. This allows the pool size to be
reduced more quickly than waiting for open sockets to be closed by the
remote.
Version 1.10.1:
* Include connection failures in stats collection; previously these were not
tracked.
Version 1.10.0:
* Change details of retry handling on connection failure. Previously a
failure was always retried; now a failure is only retried if an existing
socket is being used, under the assumption that the failure is because the
remote end closed the existing socket before the current request tried to
use it.
* Change default for send_retry option from 1 to 0, so that requests will not
be retried by default (unless they are reusing an existing connection, in
which case a new connection is opened and they are retried once).
Version 1.9.0:
* Use max_connections and connection_lifetime options on each request to
decide whether a new socket can be opened and, if so, how long it will live.
This allows the size of the connection pool and the connection lifetimes to
be changed without having to restart the application.
Version 1.8.0:
* Write host/port/ssl to process dictionary in lhttpc_lb for debugging.
Version 1.7.0:
* Optimize header handling.
Version 1.6.0:
* Add request_limit and connection_lifetime options to lhttpc:request.
* Small fixes to lhttpc specs.
* Convert from os:timestamp/0 to erlang:monotonic_time/0.
* Convert rebar.config to rebar3.
Version 1.5.4:
* Remove ssl:seed/1 call, which was removed in OTP R14B.
Version 1.5.3:
* lhttpc:request spec fixes for Erlang 19 dialyzer.
Version 1.5.2:
* Don't emit output when a client dies before we can monitor it.
Version 1.5.1:
* Update specs to reflect that binary is allowed for request body in
addition to iodata.
Version 1.5.0:
* Changes to compile under Erlang 18.
Version 1.4.0:
* Add lhttpc_stats module.
Version 1.3.3:
* Add lhttpc_dns:check_table function.
* Log a warning when the DNS cache is reset.
Version 1.3.1:
* DNS caching fix: Treat a DNS lookup that succeeds but returns no A
records as a failure.
Version 1.3.0:
* Add caching of DNS lookups. This is disabled by the default
lhttpc.app file, but can be overridden by setting the lhttpc
dns_cache env parameter.
Version 1.2.8:
* Add support for connect_options
* Enables the user to pass socket options, for instance ip and port,
that will be used when connecting the socket
* Allows the user to specify SSL options during the connect phase
* Add support for "streaming" of entities
* Add start/0 and stop/0
* Fix for unexpected messages after request has been completed
* When the client process is trapping exits (which some eunit versions seem
to be doing by default) there would be {'EXIT', Pid, normal} messages left
after completing requests which came from the lhttpc_client process.
These are now avoided.
* Add rebar support (thanks to Benoit Chesneau)
Version 1.2.5:
* Fix for decoding chunked HTTP responses with extraneous whitespace
(thanks to Bob Ippolito)
* api.facebook.com includes extra whitespace in its chunked HTTP response
length, e.g. "6 \r\n" instead of "6\r\n".
Version 1.2.4:
* Fix handling of HTTP response code 304 (patch by Ben Slavin)
Version 1.2.3:
* Fix handling of unexpected 100 Continue response (patch by Magnus Henoch)
Version 1.2.2:
* Fix Host header, add port number (reported by Benoit Chesneau)
Version 1.2.1:
* Fix confusion of arguments in request/9 (introduced in 1.2.0)
Version 1.2.0:
* Add support for options
* {connect_timeout, Milliseconds}: Aborts the connect phase after
Milliseconds
* {send_retry, N}: The client will retry sending the request N times
if the connection is closed
* Add support for downloading chunked transfer encoding
* More consistent error handling
* The client can either return {ok, Result} or {error, Reason}. Reason
(which wasn't very well defined before) can now be:
* connection_closed: The server closed the connection on us (N times
in case it happens just after sending the request)
* connect_timeout: If the TCP stack gives up or we hit the
connect_timeout option
* timeout: If the overall request timeout value is hit
* All other errors (socket, protocol etc. will result in a runtime error)
* Better connection handling (issues #2 and #3 on bitbucket.org/etc/lhttpc)
* Now understands what to do with connections to servers < HTTP/1.1
* Now respects "Connection: close" in request headers, which means
clients can choose to not use persistent connections
* RFC Compliance
* Fix reading of chunked encoding since section 3.6 claims that "All
transfer-coding values are case-insensitive"
* Support for responses that doesn't have an entity body (thanks to Steve
Ellis)
* No body for the HEAD and OPTIONS (unless indicated for the latter)
methods
* Don't try to read a body when receiving a 204 status
Version 1.1.2:
* Fix minor error with {active, once} instead of {active, true} in manager
* Remove socket and try to find another if the manager can't set controlling
process due to socket error
* Improve test suite
Version 1.1.1:
* Fix problem with empty lists in dicts when last socket is consumed
* Improve test suite to include cover report
Version 1.1.0:
* Support for configurable connection timeout
Version 1.0.0:
* Initial version
* Persistent connections have hardcoded timeout
# Local variables:
# mode: text
# End: