daphne/CHANGELOG.txt
2017-06-16 10:37:30 +08:00

285 lines
7.2 KiB
Plaintext

1.3.0 (2017-06-16)
------------------
* Ability to set the websocket connection timeout
* Server no longer reveals the exact Autobahn version number for security
* A few unicode fixes for Python 2/3 compatability
* Stopped logging messages to already-closed connections as ERROR
1.2.0 (2017-04-01)
------------------
* The new process-specific channel support is now implemented, resulting in
significantly less traffic to your channel backend.
* Native twisted blocking support for channel layers that support it is now
used. While it is a lot more efficient, it is also sometimes slightly more
latent; you can disable it using --force-sync.
* Native SSL termination is now correctly reflected in the ASGI-HTTP `scheme`
key.
* accept: False is now a valid way to deny a connection, as well as close: True.
* HTTP version is now correctly sent as one of "1.0", "1.1" or "2".
* More command line options for websocket timeouts
1.1.0 (2017-03-18)
------------------
* HTTP/2 termination is now supported natively. The Twisted dependency has been
increased to at least 17.1 as a result; for more information about setting up
HTTP/2, see the README.
* X-Forwarded-For decoding support understands IPv6 addresses, and picks the
most remote (leftmost) entry if there are multiple relay hosts.
* Fixed an error where `disconnect` messages would still try and get sent even
if the client never finished a request.
1.0.3 (2017-02-12)
------------------
* IPv6 addresses are correctly accepted as bind targets on the command line
* Twisted 17.1 compatability fixes for WebSocket receiving/keepalive and
proxy header detection.
1.0.2 (2017-02-01)
------------------
* The "null" WebSocket origin (including file:// and no value) is now accepted
by Daphne and passed onto the application to accept/deny.
* Listening on file descriptors works properly again.
* The DeprecationError caused by not passing endpoints into a Server class
directly is now a warning instead.
1.0.1 (2017-01-09)
------------------
* Endpoint unicode strings now work correctly on Python 2 and Python 3
1.0.0 (2017-01-08)
------------------
* BREAKING CHANGE: Daphne now requires acceptance of WebSocket connections
before it finishes the socket handshake and relays incoming packets.
You must upgrade to at least Channels 1.0.0 as well; see
http://channels.readthedocs.io/en/latest/releases/1.0.0.html for more.
* http.disconnect now has a `path` key
* WebSockets can now be closed with a specific code
* X-Forwarded-For header support; defaults to X-Forwarded-For, override with
--proxy-headers on the commandline.
* Twisted endpoint description string support with `-e` on the command line
(allowing for SNI/ACME support, among other things)
* Logging/error verbosity fixes and access log flushes properly
0.15.0 (2016-08-28)
-------------------
* Connections now force-close themselves after pings fail for a certain
timeframe, controllable via the new --ping-timeout option.
* Badly-formatted websocket response messages now log to console in
all situations
* Compatability with Twisted 16.3 and up
0.14.3 (2016-07-21)
-------------------
* File descriptors can now be passed on the commandline for process managers
that pass sockets along like this.
* websocket.disconnect messages now come with a "code" attribute matching the
WebSocket spec.
* A memory leak in request logging has been fixed.
0.14.2 (2016-07-07)
-------------------
* Marked as incompatible with twisted 16.3 and above until we work out why
it stops incoming websocket messages working
0.14.1 (2016-07-06)
-------------------
* Consumption of websocket.receive is also now required.
0.14.0 (2016-07-06)
-------------------
* Consumption of websocket.connect is now required (channels 0.16 enforces
this); getting backpressure on it now results in the socket being
force closed.
0.13.1 (2016-06-28)
-------------------
* Bad WebSocket handshakes now return 400 and an error messages
rather than 500 with no content.
0.13.0 (2016-06-22)
-------------------
* Query strings are now sent as bytestrings and the application is responsible
for decoding. Ensure you're running Channels 0.15 or higher.
0.12.2 (2016-06-21)
-------------------
* Plus signs in query string are now handled by Daphne, not Django-by-mistake.
Ensure you're running Channels 0.14.3 or higher.
* New --root-path and DAPHNE_ROOT_PATH options for setting root path.
0.12.1 (2016-05-18)
-------------------
* Fixed bug where a non-ASCII byte in URL paths would crash the HTTP parser
without a response; now returns 400, and hardening in place to catch most
other errors and return a 500.
* WebSocket header format now matches HTTP header format and the ASGI spec.
No update needed to channels library, but user code may need updating.
0.12.0 (2016-05-07)
-------------------
* Backpressure on http.request now causes incoming requests to drop with 503.
Websockets will drop connection/disconnection messages/received frames if
backpressure is encountered; options are coming soon to instead drop the
connection if this happens.
0.11.4 (2016-05-04)
-------------------
* Don't try to send TCP host info in message for unix sockets
0.11.3 (2016-04-27)
-------------------
* Don't decode + as a space in URLs
0.11.2 (2016-04-27)
-------------------
* Correctly encode all path params for WebSockets
0.11.1 (2016-04-26)
-------------------
* Fix bugs with WebSocket path parsing under Python 2
0.11.0 (2016-04-26)
-------------------
* HTTP paths and query strings are now pre-decoded before going to ASGI
0.10.3 (2016-04-05)
-------------------
* Error on badly formatted websocket reply messages
0.10.2 (2016-04-03)
-------------------
* Access logging in NCSAish format now printed to stdout, configurable to
another file using --access-log=filename
0.10.1 (2016-03-29)
-------------------
* WebSockets now close after they've been open for longer than the channel
layer group expiry (86400 seconds by default for most layers).
* Binding to UNIX sockets is now possible (use the -u argument)
* WebSockets now send keepalive pings if they've had no data for a certain
amount of time (20 seconds by default, set with --ping-interval)
0.10.0 (2016-03-21)
-------------------
* Multiple cookies are now set correctly
* Follows new ASGI single-response-channel spec for !
* Follows new ASGI header encoding spec for HTTP
0.9.3 (2016-03-08)
------------------
* WebSocket query strings are correctly encoded
0.9.2 (2016-03-02)
------------------
* HTTP requests now time out after a configurable amount of time and return 503
(default is 2 minutes)
0.9.1 (2016-03-01)
------------------
* Main thread actually idles rather than sitting at 100%
* WebSocket packets have an "order" attribute attached
* WebSocket upgrade header detection is now case insensitive
0.9 (2016-02-21)
----------------
* Signal handlers can now be disabled if you want to run inside a thread
(e.g. inside Django autoreloader)
* Logging hooks that can be used to allow calling code to show requests
and other events.
* Headers are now transmitted for websocket.connect
* http.disconnect messages are now sent
* Request handling speed significantly improved