+ - Adaptations to allow operations inside OPTEE Secure World
+
+ - ESP32 initial port - able to do all test server functions. See
+ README.build.md
+
+ - Serving gzipped files from inside a ZIP file is supported... this
+ includes directly serving the gzipped content if the client
+ indicated it could accept it (ie, almost all browsers) saving
+ bandwidth and time. For clients that can't accept it, lws
+ automatically decompresses and serves the content in memory-
+ efficient chunks. Only a few hundred bytes of heap are needed
+ to serve any size file from inside the zip. See README.coding.md
+
+ - RAW file descriptors may now be adopted into the lws event loop,
+ independent of event backend (including poll service).
+ See README.coding.md
+
+ - RAW server socket descriptors may now be enabled on the vhost if
+ the first thing sent on the connection is not a valid http method.
+ The user code can associate these with a specific protocol per
+ vhost, and RAW-specific callbacks appear there for creation, rx,
+ writable and close. See libwebsockets-test-server-v2.0 for an example.
+ See README.coding.md
+
+ - RAW client connections are now possible using the method "RAW".
+ After connection, the socket is associated to the protocol
+ named in the client connection info and RAW-specific callbacks
+ appear there for creation, rx, writable and close.
+ See libwebsockets-test-client (with raw://) for an example.
+ See README.coding.md
+
+
+v2.1.0
+======
+
+Major new features
+
+ - Support POST arguments, including multipart and file attachment
+
+ - Move most of lwsws into lws, make the stub CC0
+
+ - Add loopback test plugin to confirm client ws / http coexistence
+
+ - Integrate lwsws testing on Appveyor (ie, windows)
+
+ - Introduce helpers for sql, urlencode and urldecode sanitation
+
+ - Introduce LWS_CALLBACK_HTTP_BIND_PROTOCOL / DROP_PROTOCOL that
+ are compatible with http:/1.1 pipelining and different plugins
+ owning different parts of the URL space
+
+ - lwsgs - Generic Sessions plugin supports serverside sessions,
+ cookies, hashed logins, forgot password etc
+
+ - Added APIs for sending email to SMTP servers
+
+ - Messageboard example plugin for lwsgs
+
+ - Automatic PING sending at fixed intervals and close if no response
+
+ - Change default header limit in ah to 4096 (from 1024)
+
+ - Add SNI matching for wildcards if no specific wildcard vhost name match
+
+ - Convert docs to Doxygen
+
+ - ESP8266 support ^^
+
+Fixes
+-----
+
+See git log v2.0.0..
+
+
+
+v2.0.0
+======
+
+Summary
+-------
+
+ - There are only api additions, the api is compatible with v1.7.x. But
+ there is necessarily an soname bump to 8.
+
+ - If you are using lws client, you mainly need to be aware the option
+ LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT is needed at context-creation time
+ if you will use SSL.
+
+ - If you are using lws for serving, the above is also true but there are
+ many new features to simplify your code (and life). There is a
+ summany online here
+
+ https://libwebsockets.org/lws-2.0-new-features.html
+
+ but basically the keywords are vhosts, mounts and plugins. You can now
+ do the web serving part from lws without any user callback code at all.
+ See ./test-server/test-server-v2.0.c for an example, it has no user
+ code for ws either since it uses the protocol plugins... that one C file
+ is all that is needed to do the whole test server function.
+
+ You now have the option to use a small generic ws-capable webserver
+ "lwsws" and write your ws part as a plugin. That eliminates even
+ cut-and-pasting the test server code and offers more configurable
+ features like control over http cacheability in JSON.
+
+
+Fixes
+-----
+
+These are already in 1.7.x series
+
+1) MAJOR (Windows-only) fix assert firing
+
+2) MAJOR http:/1.1 connections handled by lws_return_http_status() did not
+get sent a content-length resulting in the link hanging until the peer closed
+it. attack.sh updated to add a test for this.
+
+3) MINOR An error about hdr struct in _lws_ws_related is corrected, it's not
+known to affect anything until after it was fixed
+
+4) MINOR During the close shutdown wait state introduced at v1.7, if something
+requests callback on writeable for the socket it will busywait until the
+socket closes
+
+5) MAJOR Although the test server has done it for a few versions already, it
+is now required for the user code to explicitly call
+
+ if (lws_http_transaction_completed(wsi))
+ return -1;
+
+when it finishes replying to a transaction in http. Previously the library
+did it for you, but that disallowed large, long transfers with multiple
+trips around the event loop (and cgi...).
+
+6) MAJOR connections on ah waiting list that closed did not get removed from
+the waiting list...
+
+7) MAJOR since we added the ability to hold an ah across http keepalive
+transactions where more headers had already arrived, we broke the ability
+to tell if more headers had arrived. Result was if the browser didn't
+close the keepalive, we retained ah for the lifetime of the keepalive,
+using up the pool.
+
+8) MAJOR windows-only-POLLHUP was not coming
+
+9) Client should not send ext hdr if no exts
+
+Changes
+-------
+
+1) MINOR test-server gained some new switches
+
+ -C <file> use external SSL cert file
+ -K <file> use external SSL key file
+ -A <file> use external SSL CA cert file
+
+ -u <uid> set effective uid
+ -g <gid> set effective gid
+
+together you can use them like this to have the test-server work with the
+usual purchased SSL certs from an official CA.
+
+ --ssl -C your.crt -K your.key -A your.cer -u 99 -g 99
+
+2) MINOR the OpenSSL magic to setup ECDH cipher usage is implemented in the
+library, and the ciphers restricted to use ECDH only.
+Using this, the lws test server can score an A at SSLLABS test
+
+3) MINOR STS (SSL always) header is added to the test server if you use --ssl. With
+that, we score A+ at SSLLABS test
+
+4) MINOR daemonize function (disabled at cmake by default) is updated to work
+with systemd
+
+5) MINOR example systemd .service file now provided for test server
+(not installed by default)
+
+6) test server html is updated with tabs and a new live server monitoring
+feature. Input sanitization added to the js.
+
+7) client connections attempted when no ah is free no longer fail, they are
+just deferred until an ah becomes available.
+
+8) The test client pays attention to if you give it an http:/ or https://
+protocol string to its argument in URL format. If so, it stays in http[s]
+client mode and doesn't upgrade to ws[s], allowing you to do generic http client
+operations. Receiving transfer-encoding: chunked is supported.
+
+9) If you enable -DLWS_WITH_HTTP_PROXY=1 at cmake, the test server has a
+new URI path http://localhost:7681/proxytest If you visit here, a client
+connection to http://example.com:80 is spawned, and the results piped on
+to your original connection.
+
+10) Also with LWS_WITH_HTTP_PROXY enabled at cmake, lws wants to link to an
+additional library, "libhubbub". This allows lws to do html rewriting on the
+fly, adjusting proxied urls in a lightweight and fast way.
+
+11) There's a new context creation flag LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT,
+this is included automatically if you give any other SSL-related option flag.
+If you give no SSL-related option flag, nor this one directly, then even
+though SSL support may be compiled in, it is never initialized nor used for the
+whole lifetime of the lws context.
+
+Conversely in order to prepare the context to use SSL, even though, eg, you
+are not listening on SSL but will use SSL client connections later, you must
+give this flag explicitly to make sure SSL is initialized.
+
+
+User API additions