[Libwebsockets] Next lws release coming up

Andy Green andy at warmcat.com
Wed Apr 25 09:57:22 CEST 2018


Hi -

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:

https://github.com/crossbario/autobahn-testsuite/issues/71

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 
examples"

https://github.com/warmcat/libwebsockets/tree/master/minimal-examples

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

https://github.com/warmcat/libwebsockets/tree/master/lib/roles

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.

-Andy


More information about the Libwebsockets mailing list