17 KiB
Changes
[0.7.18] - 2019-01-02
Added
- Add
with_cookie
forTestRequest
to allow users to customize request cookie. #647 - Add
cookie
method forTestRequest
to allow users to add cookie dynamically.
[0.7.17] - 2018-12-25
Added
-
Support for custom content types in
JsonConfig
. #637 -
Send
HTTP/1.1 100 Continue
if request containsexpect: continue
header #634
Fixed
-
HTTP1 decoder should perform case-insentive comparison for client requests (e.g.
Keep-Alive
). #631 -
Access-Control-Allow-Origin header should only a return a single, matching origin. #603
[0.7.16] - 2018-12-11
Added
-
Implement
FromRequest
extractor forEither<A,B>
-
Implement
ResponseError
forSendError
[0.7.15] - 2018-12-05
Changed
-
ClientConnector::resolver
now acceptsInto<Recipient>
instead ofAddr
. It enables user to implement own resolver. -
QueryConfig
andPathConfig
are made public. -
AsyncResult::async
is changed toAsyncResult::future
asasync
is reserved keyword in 2018 edition.
Added
- By default,
Path
extractor now percent decode all characters. This behaviour can be disabled withPathConfig::default().disable_decoding()
[0.7.14] - 2018-11-14
Added
-
Add method to configure custom error handler to
Query
andPath
extractors. -
Add method to configure
SameSite
option inCookieIdentityPolicy
. -
By default,
Path
extractor now percent decode all characters. This behaviour can be disabled withPathConfig::default().disable_decoding()
Fixed
-
Fix websockets connection drop if request contains "content-length" header #567
-
Fix keep-alive timer reset
-
HttpServer now treats streaming bodies the same for HTTP/1.x protocols. #549
-
Set nodelay for socket #560
[0.7.13] - 2018-10-14
Fixed
-
Fixed rustls support
-
HttpServer not sending streamed request body on HTTP/2 requests #544
[0.7.12] - 2018-10-10
Changed
-
Set min version for actix
-
Set min version for actix-net
[0.7.11] - 2018-10-09
Fixed
- Fixed 204 responses for http/2
[0.7.10] - 2018-10-09
Fixed
- Fixed panic during graceful shutdown
[0.7.9] - 2018-10-09
Added
-
Added client shutdown timeout setting
-
Added slow request timeout setting
-
Respond with 408 response on slow request timeout #523
Fixed
-
HTTP1 decoding errors are reported to the client. #512
-
Correctly compose multiple allowed origins in CORS. #517
-
Websocket server finished() isn't called if client disconnects #511
-
Responses with the following codes: 100, 101, 102, 204 -- are sent without Content-Length header. #521
-
Correct usage of
no_http2
flag inbind_*
methods. #519
[0.7.8] - 2018-09-17
Added
- Use server
Keep-Alive
setting as slow request timeout #439
Changed
- Use 5 seconds keep-alive timer by default.
Fixed
- Fixed wrong error message for i16 type #510
[0.7.7] - 2018-09-11
Fixed
-
Fix linked list of HttpChannels #504
-
Fix requests to TestServer fail #508
[0.7.6] - 2018-09-07
Fixed
-
Fix system_exit in HttpServer #501
-
Fix parsing of route param containin regexes with repetition #500
Changes
- Unhide
SessionBackend
andSessionImpl
traits #455
[0.7.5] - 2018-09-04
Added
-
Added the ability to pass a custom
TlsConnector
. -
Allow to register handlers on scope level #465
Fixed
-
Handle socket read disconnect
-
Handling scoped paths without leading slashes #460
Changed
- Read client response until eof if connection header set to close #464
[0.7.4] - 2018-08-23
Added
-
Added
HttpServer::maxconn()
andHttpServer::maxconnrate()
, accept backpressure #250 -
Allow to customize connection handshake process via
HttpServer::listen_with()
andHttpServer::bind_with()
methods -
Support making client connections via
tokio-uds
'sUnixStream
when "uds" feature is enabled #472
Changed
-
It is allowed to use function with up to 10 parameters for handler with
extractor parameters
.Route::with_config()
/Route::with_async_config()
always passes configuration objects as tuple even for handler with one parameter. -
native-tls - 0.2
-
Content-Disposition
is re-worked. Its parser is now more robust and handles quoted content better. See #461
Fixed
-
Use zlib instead of raw deflate for decoding and encoding payloads with
Content-Encoding: deflate
. -
Fixed headers formating for CORS Middleware Access-Control-Expose-Headers #436
-
Fix adding multiple response headers #446
-
Client includes port in HOST header when it is not default(e.g. not 80 and 443). #448
-
Panic during access without routing being set #452
-
Fixed http/2 error handling
Deprecated
-
HttpServer::no_http2()
is deprecated, useOpensslAcceptor::with_flags()
orRustlsAcceptor::with_flags()
instead -
HttpServer::listen_tls()
,HttpServer::listen_ssl()
,HttpServer::listen_rustls()
have been deprecated in favor ofHttpServer::listen_with()
with specificacceptor
. -
HttpServer::bind_tls()
,HttpServer::bind_ssl()
,HttpServer::bind_rustls()
have been deprecated in favor ofHttpServer::bind_with()
with specificacceptor
.
[0.7.3] - 2018-08-01
Added
-
Support HTTP/2 with rustls #36
-
Allow TestServer to open a websocket on any URL (TestServer::ws_at()) #433
Fixed
-
Fixed failure 0.1.2 compatibility
-
Do not override HOST header for client request #428
-
Gz streaming, use
flate2::write::GzDecoder
#228 -
HttpRequest::url_for is not working with scopes #429
-
Fixed headers' formating for CORS Middleware
Access-Control-Expose-Headers
header value to HTTP/1.1 & HTTP/2 spec-compliant format #436
[0.7.2] - 2018-07-26
Added
-
Add implementation of
FromRequest<S>
forOption<T>
andResult<T, Error>
-
Allow to handle application prefix, i.e. allow to handle
/app
path for application with/app
prefix. CheckApp::prefix()
api doc. -
Add
CookieSessionBackend::http_only
method to setHttpOnly
directive of cookies
Changed
-
Upgrade to cookie 0.11
-
Removed the timestamp from the default logger middleware
Fixed
-
Missing response header "content-encoding" #421
-
Fix stream draining for http/2 connections #290
[0.7.1] - 2018-07-21
Fixed
- Fixed default_resource 'not yet implemented' panic #410
[0.7.0] - 2018-07-21
Added
-
Add
fs::StaticFileConfig
to provide means of customizing static file services. It allows to mapmime
toContent-Disposition
, specify whether to useETag
andLast-Modified
and allowed methods. -
Add
.has_prefixed_resource()
method torouter::ResourceInfo
for route matching with prefix awareness -
Add
HttpMessage::readlines()
for reading line by line. -
Add
ClientRequestBuilder::form()
for sendingapplication/x-www-form-urlencoded
requests. -
Add method to configure custom error handler to
Form
extractor. -
Add methods to
HttpResponse
to retrieve, add, and delete cookies -
Add
.set_content_type()
and.set_content_disposition()
methods tofs::NamedFile
to allow overriding the values inferred by default -
Add
fs::file_extension_to_mime()
helper function to get the MIME type for a file extension -
Add
.content_disposition()
method to parse Content-Disposition of multipart fields -
Re-export
actix::prelude::*
asactix_web::actix
module. -
HttpRequest::url_for_static()
for a named route with no variables segments -
Propagation of the application's default resource to scopes that haven't set a default resource.
Changed
-
Min rustc version is 1.26
-
Use tokio instead of tokio-core
-
CookieSessionBackend
sets percent encoded cookies for outgoing HTTP messages. -
Became possible to use enums with query extractor. Issue #371. Example
-
HttpResponse::into_builder()
now moves cookies into the builder instead of dropping them -
For safety and performance reasons
Handler::handle()
uses&self
instead of&mut self
-
Handler::handle()
uses&HttpRequest
instead ofHttpRequest
-
Added header
User-Agent: Actix-web/<current_version>
to default headers when building a request -
port
Extensions
type from http create, we don't needSend + Sync
-
HttpRequest::query()
returnsRef<HashMap<String, String>>
-
HttpRequest::cookies()
returnsRef<Vec<Cookie<'static>>>
-
StaticFiles::new()
returnsResult<StaticFiles<S>, Error>
instead ofStaticFiles<S>
-
StaticFiles
uses the default handler if the file does not exist
Removed
-
Remove
Route::with2()
andRoute::with3()
use tuple of extractors instead. -
Remove
HttpMessage::range()
[0.6.15] - 2018-07-11
Fixed
-
Fix h2 compatibility #352
-
Fix duplicate tail of StaticFiles with index_file. #344
[0.6.14] - 2018-06-21
Added
- Allow to disable masking for websockets client
Fixed
- SendRequest execution fails with the "internal error: entered unreachable code" #329
[0.6.13] - 2018-06-11
-
http/2 end-of-frame is not set if body is empty bytes #307
-
InternalError can trigger memory unsafety #301
[0.6.12] - 2018-06-08
Added
-
Add
Host
filter #287 -
Allow to filter applications
-
Improved failure interoperability with downcasting #285
-
Allow to use custom resolver for
ClientConnector
[0.6.11] - 2018-06-05
-
Support chunked encoding for UrlEncoded body #262
-
HttpRequest::url_for()
for a named route with no variables segments #265 -
Middleware::response()
is not invoked if error result was returned by anotherMiddleware::start()
#255 -
CORS: Do not validate Origin header on non-OPTION requests #271
-
Fix multipart upload "Incomplete" error #282
[0.6.10] - 2018-05-24
Added
-
Allow to use path without trailing slashes for scope registration #241
-
Allow to set encoding for exact NamedFile #239
Fixed
TestServer::post()
actually sendsGET
request #240
0.6.9 (2018-05-22)
-
Drop connection if request's payload is not fully consumed #236
-
Fix streaming response with body compression
0.6.8 (2018-05-20)
-
Fix scope resource path extractor #234
-
Re-use tcp listener on pause/resume
0.6.7 (2018-05-17)
- Fix compilation with --no-default-features
0.6.6 (2018-05-17)
-
Panic during middleware execution #226
-
Add support for listen_tls/listen_ssl #224
-
Implement extractor for
Session
-
Ranges header support for NamedFile #60
0.6.5 (2018-05-15)
- Fix error handling during request decoding #222
0.6.4 (2018-05-11)
- Fix segfault in ServerSettings::get_response_builder()
0.6.3 (2018-05-10)
-
Add
Router::with_async()
method for async handler registration. -
Added error response functions for 501,502,503,504
-
Fix client request timeout handling
0.6.2 (2018-05-09)
- WsWriter trait is optional.
0.6.1 (2018-05-08)
-
Fix http/2 payload streaming #215
-
Fix connector's default
keep-alive
andlifetime
settings #212 -
Send
ErrorNotFound
instead ofErrorBadRequest
when path extractor fails #214 -
Allow to exclude certain endpoints from logging #211
0.6.0 (2018-05-08)
-
Add route scopes #202
-
Allow to use ssl and non-ssl connections at the same time #206
-
Websocket CloseCode Empty/Status is ambiguous #193
-
Add Content-Disposition to NamedFile #204
-
Allow to access Error's backtrace object
-
Allow to override files listing renderer for
StaticFiles
#203 -
Various extractor usability improvements #207
0.5.6 (2018-04-24)
- Make flate2 crate optional #200
0.5.5 (2018-04-24)
-
Fix panic when Websocket is closed with no error code #191
-
Allow to use rust backend for flate2 crate #199
0.5.4 (2018-04-19)
-
Add identity service middleware
-
Middleware response() is not invoked if there was an error in async handler #187
-
Use Display formatting for InternalError Display implementation #188
0.5.3 (2018-04-18)
- Impossible to quote slashes in path parameters #182
0.5.2 (2018-04-16)
-
Allow to configure StaticFiles's CpuPool, via static method or env variable
-
Add support for custom handling of Json extractor errors #181
-
Fix StaticFiles does not support percent encoded paths #177
-
Fix Client Request with custom Body Stream halting on certain size requests #176
0.5.1 (2018-04-12)
-
Client connector provides stats,
ClientConnector::stats()
-
Fix end-of-stream handling in parse_payload #173
-
Fix StaticFiles generate a lot of threads #174
0.5.0 (2018-04-10)
-
Type-safe path/query/form parameter handling, using serde #70
-
HttpResponse builder's methods
.body()
,.finish()
,.json()
returnHttpResponse
instead ofResult
-
Use more ergonomic
actix_web::Error
instead ofhttp::Error
forClientRequestBuilder::body()
-
Added
signed
andprivate
CookieSessionBackend
s -
Added
HttpRequest::resource()
, returns current matched resource -
Added
ErrorHandlers
middleware -
Fix router cannot parse Non-ASCII characters in URL #137
-
Fix client connection pooling
-
Fix long client urls #129
-
Fix panic on invalid URL characters #130
-
Fix logger request duration calculation #152
-
Fix prefix and static file serving #168
0.4.10 (2018-03-20)
-
Use
Error
instead ofInternalError
forerror::ErrorXXXX
methods -
Allow to set client request timeout
-
Allow to set client websocket handshake timeout
-
Refactor
TestServer
configuration -
Fix server websockets big payloads support
-
Fix http/2 date header generation
0.4.9 (2018-03-16)
-
Allow to disable http/2 support
-
Wake payload reading task when data is available
-
Fix server keep-alive handling
-
Send Query Parameters in client requests #120
-
Move brotli encoding to a feature
-
Add option of default handler for
StaticFiles
handler #57 -
Add basic client connection pooling
0.4.8 (2018-03-12)
-
Allow to set read buffer capacity for server request
-
Handle WouldBlock error for socket accept call
0.4.7 (2018-03-11)
-
Fix panic on unknown content encoding
-
Fix connection get closed too early
-
Fix streaming response handling for http/2
-
Better sleep on error support
0.4.6 (2018-03-10)
-
Fix client cookie handling
-
Fix json content type detection
-
Fix CORS middleware #117
-
Optimize websockets stream support
0.4.5 (2018-03-07)
-
Fix compression #103 and #104
-
Fix client cookie handling #111
-
Non-blocking processing of a
NamedFile
-
Enable compression support for
NamedFile
-
Better support for
NamedFile
type -
Add
ResponseError
impl forSendRequestError
. This improves ergonomics of the client. -
Add native-tls support for client
-
Allow client connection timeout to be set #108
-
Allow to use std::net::TcpListener for HttpServer
-
Handle panics in worker threads
0.4.4 (2018-03-04)
-
Allow to use Arc<Vec> as response/request body
-
Fix handling of requests with an encoded body with a length > 8192 #93
0.4.3 (2018-03-03)
-
Fix request body read bug
-
Fix segmentation fault #79
-
Set reuse address before bind #90
0.4.2 (2018-03-02)
-
Better naming for websockets implementation
-
Add
Pattern::with_prefix()
, make it more usable outside of actix -
Add csrf middleware for filter for cross-site request forgery #89
-
Fix disconnect on idle connections
0.4.1 (2018-03-01)
-
Rename
Route::p()
toRoute::filter()
-
Better naming for http codes
-
Fix payload parse in situation when socket data is not ready.
-
Fix Session mutable borrow lifetime #87
0.4.0 (2018-02-28)
-
Actix 0.5 compatibility
-
Fix request json/urlencoded loaders
-
Simplify HttpServer type definition
-
Added HttpRequest::encoding() method
-
Added HttpRequest::mime_type() method
-
Added HttpRequest::uri_mut(), allows to modify request uri
-
Added StaticFiles::index_file()
-
Added http client
-
Added websocket client
-
Added TestServer::ws(), test websockets client
-
Added TestServer http client support
-
Allow to override content encoding on application level
0.3.3 (2018-01-25)
-
Stop processing any events after context stop
-
Re-enable write back-pressure for h1 connections
-
Refactor HttpServer::start_ssl() method
-
Upgrade openssl to 0.10
0.3.2 (2018-01-21)
-
Fix HEAD requests handling
-
Log request processing errors
-
Always enable content encoding if encoding explicitly selected
-
Allow multiple Applications on a single server with different state #49
-
CORS middleware: allowed_headers is defaulting to None #50
0.3.1 (2018-01-13)
-
Fix directory entry path #47
-
Do not enable chunked encoding for HTTP/1.0
-
Allow explicitly disable chunked encoding
0.3.0 (2018-01-12)
-
HTTP/2 Support
-
Refactor streaming responses
-
Refactor error handling
-
Asynchronous middlewares
-
Refactor logger middleware
-
Content compression/decompression (br, gzip, deflate)
-
Server multi-threading
-
Graceful shutdown support
0.2.1 (2017-11-03)
-
Allow to start tls server with
HttpServer::serve_tls
-
Export
Frame
enum -
Add conversion impl from
HttpResponse
andBinaryBody
to aFrame
0.2.0 (2017-10-30)
-
Do not use
http::Uri
as it can not parse some valid paths -
Refactor response
Body
-
Refactor
RouteRecognizer
usability -
Refactor
HttpContext::write
-
Refactor
Payload
stream -
Re-use
BinaryBody
forFrame::Payload
-
Stop http actor on
write_eof
-
Fix disconnection handling.
0.1.0 (2017-10-23)
- First release