[Libwebsockets] Next lws release coming up
andy at warmcat.com
Wed Apr 25 09:57:22 CEST 2018
In the next days I plan to release a new stable version of lws.
Since v2.4, I added a bunch of CI QA, currently 1.2K tests per push
including all working autobahn client + server. If any of those tests
fail it breaks the travis build.
Currently two sets of test are broken in autobahn itself:
since Aug 2017, ie, basically Autobahn is unmaintained. Autobahn long
ago decided to test for a couple of useless things not in RFC6455, 10 x
pings spammed getting 10 x pong results pipelined, which is not what
anybody actually uses ws ping for and is not in the ws spec at all. So
two individual tests related to that we do not perform. Otherwise it is
everything else, 480 tests each for client and server mode.
attack.sh is also run on every commit, which tests hundreds of http
parsing variants and if you did not yet notice, I added 32 x "minimal
which largely replace the test apps and are build-tested plus 29
scenarios of those also runtime-tested each push.
The CI improvements has enabled a giant cleanup and refactor of the code
structure over the last weeks... some of the code is 8 years old and
overdue for some sprucing up. To prepare for the future, I introduced
"roles", which encapsulate in the source the different domains lws
covers, like h1, h2, ws, raw etc.
These are now implemented though an ops-style structs that defines how a
wsi that became bound to a particular role actually does thing. For
example, all roles have their user code send things by lws_write()...
but now that boils down to a ->write_role_protocol() callback on the
role struct the wsi is bound to. The different roles do whatever their
role requires to prepare the payload and send it... lws_write() itself
is now just a few lines.
Along with that the roles have become more controllable for build. Even
ws support, via LWS_ROLE_WS in cmake, is now optional.
Your can read some docs about how to add new roles here
It would be great if lws users confirm current master against their
codebase and let me know about any problems. That isn't what has
happened in the past, people just want to find version x.0 is always
perfect without them having to do anything.
Please give even a little back by looking for problems with what will
become the new release now, or even better actually contributing something.
More information about the Libwebsockets