1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-16 00:00:07 +01:00
Commit graph

2562 commits

Author SHA1 Message Date
Andy Green
800cd40f88 client: support pipelining / h2 multi for POST
https://github.com/warmcat/libwebsockets/issues/1256
2018-04-27 07:25:45 +08:00
Andy Green
5d06f610a9 travis: h2spec integration 2018-04-26 15:27:02 +08:00
Andy Green
2e3ddeedb6 lws_get_peer_write_allowance: return lws_fileofs_t 2018-04-26 08:30:12 +08:00
Silas Parker
87bb121b47 cmake: avoid killing CMAKE_C_FLAGS
https://github.com/warmcat/libwebsockets/issues/1252
2018-04-25 16:56:23 +08:00
Andy Green
27e86e2641 cmake: allow setting LWS_ROLE_WS
You can build lws without support for ws, with -DLWS_ROLE_WS=0.

This is thanks to the role ops isolating all the ws-specific business
in the ws role.

Also retire more test apps replaced by minmal-examples.
2018-04-25 08:42:18 +08:00
Andy Green
8e9751e26e refactor: move out extension lws members into ws and establish role structs for vhost content 2018-04-25 06:53:30 +08:00
Andy Green
7b227eb333 autobahn fixes
This replaces the old test-app for echo with separate client and server
minimal versions.

The autobahn test script is made more autonomous and tests both
client and server.
2018-04-22 06:45:46 +08:00
Labunsky Artem
3459d4fe43 Removing rudimental n1 variable
There is no real need in n1, since it used in only at one place once.
Also it will prevent "variable ‘n1’ set but not used [-Werror=unused-but-set-variable]" error on build with -DLWS_MAX_SMP=N, where N > 1.

AG: also add LWS_MAP_SMP != 1 test to travis to catch this kind of thing sooner
2018-04-21 10:24:44 +08:00
Andy Green
4c5138eade proxy: allow use of at char in passwords
Applies to both http proxy and socks proxy

https://github.com/warmcat/libwebsockets/issues/1247
2018-04-20 10:49:29 +08:00
Andy Green
97e36d8901 minimal examples for Server Side Events 2018-04-20 07:15:42 +08:00
Andy Green
658c752998 lws_add_http_common_headers: provide WSI_TOKEN_HTTP_CONTENT_TYPE helper 2018-04-20 07:13:05 +08:00
Andy Green
3f683351b3 refactor: split out private role header content
Private header stuff specific to roles should go in the
role dir and only be included if the role is enabled for
build.

Only definitions related to lws core should go in the actual
private-libwebsockets.h
2018-04-20 07:13:05 +08:00
Andy Green
1d2094996e refactor: absorb other caches into buflist
1) Remove the whole ah rxbuf and put things on to the wsi buflist

This eliminates the whole detachability thing based on ah rxbuf
state... ah can always be detached.

2) Remove h2 scratch and put it on the wsi buflist

3) Remove preamble_rx and use the wsi buflist

This was used in the case adopted sockets had already been read.


Basically there are now only three forced service scenarios

 - something in buflist (and not in state LRS_DEFERRING_ACTION)

 - tls layer has buffered rx

 - extension has buffered rx

This is a net removal of around 400 lines of special-casing.
2018-04-20 07:13:05 +08:00
Andy Green
1bf30c8620 debug: with debug build and uv, repeat some closes
The closes have to complete after libuv returned to the
event loop.  So make sure to catch any problem that gets
introduced where another close entry in the meanwhile is
unsafe.

https://github.com/warmcat/libwebsockets/issues/1245
2018-04-19 16:16:49 +08:00
Andy Green
6059c965dd minimal-http-server-basicauth 2018-04-19 16:16:48 +08:00
Andy Green
ae4897f58a smp: add some overview docs on the related minimal example 2018-04-19 16:16:48 +08:00
Andy Green
a9390874c7 tcp keepalive: user TCP_USER_TIMEOUT on linux if extant
https://github.com/warmcat/libwebsockets/issues/1223
2018-04-19 16:16:48 +08:00
Andy Green
b9b100bdfd minimal-http-server-post: redirect does its own header write
https://github.com/warmcat/libwebsockets/issues/1218
2018-04-19 16:16:48 +08:00
Andy Green
8829c2f365 selftests
This converts several of the selftests to return a status in their exit code
about whether they 'worked'.

A small bash script framework is added, with a selftest.sh in the mininmal
example dirs that support it, and a ./minimal-examples/selftests.sh script
that can be run from the build dir with no args that discovers and runs all
the selftest.sh scripts underneath.

That is also integrated into travis and the enabled tests must pass now for
travis to pass.  Travis does not have a modern libuv so it can't run a
couple of tests which are nulled out if it sees it's running in travis env.
2018-04-19 16:16:48 +08:00
Andy Green
f0048acbee minimal: add switches and exit results 2018-04-19 16:16:48 +08:00
Andy Green
62af7934c8 rxflow buflist: handle forced service 2018-04-19 16:15:10 +08:00
Andy Green
654adaf82a spa: fix potential overrun 2018-04-19 16:15:10 +08:00
Andy Green
92277ad576 lws overview 2018-04-19 16:15:10 +08:00
Mark Adler
74b4775908 zlib: Avoid pre-decrement of pointer in big-endian CRC calculation
There was a small optimization for PowerPCs to pre-increment a
pointer when accessing a word, instead of post-incrementing. This
required prefacing the loop with a decrement of the pointer,
possibly pointing before the object passed. This is not compliant
with the C standard, for which decrementing a pointer before its
allocated memory is undefined. When tested on a modern PowerPC
with a modern compiler, the optimization no longer has any effect.
Due to all that, and per the recommendation of a security audit of
the zlib code by Trail of Bits and TrustInSoft, in support of the
Mozilla Foundation, this "optimization" was removed, in order to
avoid the possibility of undefined behavior.

d1d577490c.patch
2018-04-19 16:15:10 +08:00
Mark Adler
b807ccf261 Subject: zlib: Avoid shifts of negative values inflateMark
The C standard says that bit shifts of negative integers is
undefined.  This casts to unsigned values to assure a known
result.

e54e129940.patch
2018-04-19 16:15:10 +08:00
Andy Green
4b7144f763 lws_buflist
For h1 / ws, a combination of removing POLLIN wait and
stashing any unused rx lets us immediately respond to
rx flow control requests in a simple and effective way,
because the tcp socket is the stream.

But for muxed protocols like h2, that technique cannot
be used because we cannot silence the whole bundle of
streams because one can't handle any more rx dynamically.

There are control frames and content for other streams
serialized inbetween the flow controlled stream content.
We have no choice but to read to so we can see the other
things.  Therefore for muxed protocols like h2 and spdy,
rx flow control boils down to tx credit manipulation
on individual streams to staunch the flow at the peer.

However that requires a round trip to take effect, any
transmitted packets that were in flight before the tx credit
reduction arrives at the remote peer are still going to come
and have to be dealt with by adding them to the stash.

This patch introduces lws_buflist scatter-gather type
buffer management for rxflow handling, so we can append
buffer segments in a linked-list to handle whatever rx
is unavoidably in flight on a stream that is trying to
assert rx flow control.
2018-04-19 16:15:10 +08:00
Andy Green
7812ffabcc build: put back -O3 2018-04-19 16:15:10 +08:00
Andy Green
8d79eaf124 404 processing 2018-04-19 16:15:10 +08:00
Andy Green
65f87efca9 pipe2 where possible 2018-04-19 16:15:10 +08:00
Andy Green
aa816e98a9 alpn: assemble defaults from roles and allow override
Since new roles may be incompatible with http, add support for
alpn names at the role struct, automatic generation of the
default list of alpn names that servers advertise, and the
ability to override the used alpn names per-vhost and per-
client connection.

This not only lets you modulate visibility or use of h2,
but also enables vhosts that only offer non-http roles,
as well as restricting http role vhosts to only alpn
identifiers related to http roles.
2018-04-19 16:15:10 +08:00
Hasan-Jawaheri
f978ea8658 Fixed authorization condition in 101 server response 2018-04-19 16:15:10 +08:00
Andy Green
126be3ccf3 refactor role ops
This only refactors internal architecture and representations, the user
api is unaffected.
2018-04-11 13:39:42 +08:00
Andy Green
16e2f09710 refactor mode and states into roles and states 2018-04-06 12:22:19 +08:00
Andy Green
a2210d1bb1 docs: rearrange callback list in libwebsockets.h into sections 2018-04-06 12:22:19 +08:00
Andy Green
67cfdfaeb2 coverity 189199: messageboard: confirm vhd non-NULL 2018-04-06 12:22:05 +08:00
Andy Green
bf5457af69 coverity 185654: acme: confirm vhd non-NULL 2018-04-06 12:16:51 +08:00
Andy Green
d830185df9 coverity 189197: workaround false cov detect
There's nothing wrong with ignoring the ringbuf filling.

But coverity infers there is because elsewhere under other
circumstances we report it.
2018-04-06 11:31:24 +08:00
Andy Green
e9931680c8 sshd: fixes 2018-04-06 10:44:02 +08:00
Andy Green
9a51bd0a63 LWS_TLS_CERT_INFO_OPAQUE_PUBLIC_KEY 2018-04-06 10:38:04 +08:00
Andy Green
c8af76c07c minimal-ws-server-pmd-bulk: add echo 2018-04-06 10:38:04 +08:00
Andy Green
de4c1303f5 Coverity 189186: hrtimer calculation overflow 2018-04-06 10:38:04 +08:00
Andy Green
2b180b21ce Coverity 189188: cover for meaningless coverity warning 2018-04-06 10:38:04 +08:00
Andy Green
9586acb560 Coverity 189189: client: new openssl alpn handling off-by-one 2018-04-06 10:38:04 +08:00
Andy Green
a7db6e4fd4 Coverity 189190: client: deal with NULL piggyback wsi 2018-04-06 10:38:04 +08:00
Andy Green
3c9924bf73 Coverity 189191: client: cope with missing :status on h2 client 2018-04-06 10:38:04 +08:00
Andy Green
43f9a8de80 Coverity 189185: access_log: guarantee no null wsi vhost 2018-04-06 10:38:04 +08:00
Andy Green
ece243f961 Coverity 189187: hide coverity false positive 2018-04-06 10:38:04 +08:00
Andy Green
fddebfcfae QA 2018-04-06 10:38:04 +08:00
Andy Green
719f735309 minimal-http-client-post 2018-04-06 10:38:04 +08:00
Andy Green
a017c4b0eb h2: tx END_STREAM should only set HALF_CLOSED_LOCAL 2018-04-06 10:38:04 +08:00