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

254 commits

Author SHA1 Message Date
Andy Green
d3f6f08f2c h1: handle LRS_FLUSHING_BEFORE_CLOSE at ops read
read has a tight leash on the states it's happy to turn up there,
it's good to be like that but it turns out LRS_FLUSHING_BEFORE_CLOSE
should be whitelisted since it can happen under some transient
conditions and is valid.

https://github.com/warmcat/libwebsockets/issues/1872
2020-03-26 18:10:18 +00:00
Andy Green
9cac58a4c2 lws_spa: avoid reading past table
Didn't check the lenghts of the NUL-terminated header
table properly.

https://github.com/warmcat/libwebsockets/issues/1859
2020-03-14 07:50:05 +00:00
Oliver Langlois
17357ddd5a unix plat: use eventfd in place of pipe where possible
From eventfd man page:
Applications can use an eventfd file descriptor instead of a pipe (see
pipe(2)) in all cases where a pipe is used simply to signal events.
The kernel overhead of an eventfd file descriptor is much lower than
that of a pipe, and only one file descriptor is required
(versus the two required for a pipe).
2020-02-09 05:48:16 +00:00
Christian Thießen
3179323afa http client: Fix overwite of addrlen for connect if binding to iface
The addrlen argument to connect() was overwritten by the
lws_socket_bind() result, which is a port number.
Fixes https://github.com/warmcat/libwebsockets/issues/1817
2020-01-10 06:00:14 +00:00
Andy Green
bb244c0b2b lextable: fix x-forwarded-for
https://github.com/warmcat/libwebsockets/issues/1801
2019-12-20 18:45:04 +00:00
Andy Green
f04d18b5da server vfs: close: cleanup also at just_kill_connection
... and at transaction completion
2019-11-16 08:20:48 +00:00
Andy Green
25a2ce56e2 connect: make sure SOCK_STREAM set either way 2019-11-15 20:22:29 +00:00
Andy Green
c450d06413 server: vfs: make sure handle freed if problems while setting up file transfer
https://github.com/warmcat/libwebsockets/issues/1765
2019-11-15 20:14:32 +00:00
Andy Green
0516966d7d http_proxy: fixes 2019-11-15 08:44:22 +00:00
Andy Green
0019b67f8b ws-over-h2: wrong sid on rst_stream
rst_stream is almost always called from the h2 parser... in the case
a ws-over-h2 is closing though, it can't reference the h2n parser sid
context to get the sid to send... it's unrelated at that time.

https://bugzilla.mozilla.org/show_bug.cgi?id=1590299
https://github.com/warmcat/libwebsockets/issues/1752
2019-11-04 21:24:55 +00:00
Kristján Valur Jónsson
f958c0f03e fix integer conversions from 64 bit 2019-10-27 16:38:54 +00:00
Andy Green
4d23fb1389 ws: handle no ws object at sul_ping callback 2019-10-23 12:04:32 +01:00
Zhiwen Zheng
6b0e2e7cfa cgi: fix passing cgi envs using setenv() 2019-10-07 10:14:06 +01:00
Zhiwen Zheng
de6a8e8194 illumos: fix build errors and warnings for v3.2-stable on illumos 2019-10-07 10:14:02 +01:00
Andy Green
bd8a751fc4 client_reset: don't reset protocol 2019-09-17 10:13:00 +01:00
Andy Green
a74d9f8896 tls certs: update warmcat.com and libwebsockets.org public certs
Old certs were getting near the end of their life and we switched the
server to use letsencrypt.  The root and intermediate needed for the
mbedtls case changed accordingly
2019-09-12 11:58:08 +01:00
Sviatoslav Grebenchucov
aefecce938 socks: Fix compilation error 2019-08-25 19:52:20 +01:00
Andy Green
d9dd253021 Coverity fixes 2019-08-17 08:03:47 +01:00
Andy Green
7b517eac87 lws_inform_client_conn_fail
There are many places where we have the same code to inform about client
connection failure... consolidate it
2019-08-12 12:44:36 +01:00
Andy Green
2fc35ef6bd stats: move to pt and improve presentation 2019-08-12 06:18:04 +01:00
Andy Green
498a4e2bd7 sul: all timed objects use a single pt sul list
wsi timeout, wsi hrtimer, sequencer timeout and vh-protocol timer
all now participate on a single sorted us list.

The whole idea of polling wakes is thrown out, poll waits ignore the
timeout field and always use infinite timeouts.

Introduce a public api that can schedule its own callback from the event
loop with us resolution (usually ms is all the platform can do).

Upgrade timeouts and sequencer timeouts to also be able to use us resolution.

Introduce a prepared fakewsi in the pt, so we don't have to allocate
one on the heap when we need it.

Directly handle vh-protocol timer if LWS_MAX_SMP == 1
2019-08-09 10:12:09 +01:00
Andy Green
3c12fd72e8 unify us sorted waits
There are quite a few linked-lists of things that want events after
some period.  This introduces a type binding an lws_dll2 for the
list and a lws_usec_t for the duration.

The wsi timeouts, the hrtimer and the sequencer timeouts are converted
to use these, also in the common event wait calculation.
2019-08-08 22:39:47 +01:00
Andy Green
6de416d811 h2 client: dont leak original user_space for network wsi
When creating the stream from the nwsi, the stream was created with
its own user_space that gets overwritten with the nwsi one as it is
demoted to be the stream.

Stop that leaking.
2019-08-08 22:39:44 +01:00
Andy Green
45ec3ce369 lws_dll: upgrade all instances to lws_dll2
lws_dll2 removes the downsides of lws_dll and adds new features like a
running member count and explicit owner type... it's cleaner and more
robust (eg, nodes know their owner, so they can casually switch between
list owners and remove themselves without the code knowing the owner).

This deprecates lws_dll, but since it's public it allows it to continue
to be built for 4.0 release if you give cmake LWS_WITH_DEPRECATED_LWS_DLL.

All remaining internal users of lws_dll are migrated to lws_dll2.
2019-08-08 16:58:55 +01:00
Andy Green
6dd65e2d75 COVA10117: help coverity see uri is always set
The _WSI_TOKEN_CLIENT_URI private header was always
set to something by the client api before this.  Help
Coverity understand it's OK.
2019-08-08 09:45:09 +01:00
Andy Green
7f6afa6985 COVA11626: explicitly check there is a protocol set 2019-08-08 09:45:09 +01:00
Andy Green
28fb33b120 ws: return properly if we spot no ws on ws wsi 2019-08-01 18:25:38 +01:00
hjfbswb
15ce3d03b9 solve complilation errors on vs2008
replace snprintf with lws_snprintf
2019-08-01 18:05:38 +01:00
Andy Green
a60e60bc29 http: server: support HEAD via mount
Until now we parse HEAD requests but don't properly fulfil them.

This adds enough that if the request pointed to a valid mount,
it will send the headers and complete the transaction without
sending the body.

Test with

$ (echo -n -e "GET / HTTP/1.0\r\nHost: default\r\n\r\n"; sleep 2) | nc  127.0.0.1 7681
2019-08-01 12:56:29 +01:00
Devin Barillari
4e7cefb006 ws: server: limit string check length for tokenizer on upgrade 2019-07-31 05:08:14 +01:00
Andy Green
431e4e82e1 ws: pass noncompressed server RX of zero length 2019-07-30 19:17:35 +01:00
Andy Green
077ecf042a h2: duplicate :path into ah method-specific header slot for all methods 2019-07-29 00:39:07 +01:00
Andy Green
00923627c0 client: add more descriptive string cases 2019-07-24 16:48:24 -07:00
Andy Green
7a626ef320 COVA11782: comment NOP statement 2019-07-16 10:03:05 -07:00
Andy Green
2c143ed224 COVA10117: help Coverity understand the address cannot be NULL 2019-07-16 10:02:54 -07:00
Andy Green
bc394b0680 ws: http: most of the world can't handle close,upgrade on connection
It's legal and does something important, if the upgrade fails and stays in http,
it describes how the connection should be handled after sending the error code.

But most ws servers can't cope with it...
2019-07-14 15:45:32 -07:00
Andy Green
a67efe80f1 http: make lws_http_get_uri_and_method public 2019-07-14 12:08:51 -07:00
Leonard Ricci
1ac744a314 build: change AMAZON_NOART to AMAZON_LINUX 2019-07-13 14:50:58 -07:00
Andy Green
fc5defdd2a COVA10299: check lws_change_pollfd 2019-07-13 13:39:50 -07:00
Andy Green
e3f895a71d COVA11626: pwsi is not allowed to be NULL 2019-07-13 13:28:54 -07:00
Andy Green
cd56a4b97f COVA12046: make it clear the strdup target cannot be NULL 2019-07-13 13:28:54 -07:00
Andy Green
d14dcff076 COVA11197: source indentation confused 2019-07-13 13:28:54 -07:00
Andy Green
93df14454c COVA10821: check lws_change_pollfd 2019-07-13 13:28:54 -07:00
Andy Green
049c898aad COVA10417: help coverity see no problem
This isn't strange if coverity could understand the preprocessor options
2019-07-13 13:28:54 -07:00
Andy Green
79bb26b6bd HPACK: take sizing to 0 as clear existing
Apparently some peers set the HPACK size to zero and then try
to set HPACK dynamic elements.  Take it to mean keep the same
size but clear it down.
2019-07-08 11:40:10 +01:00
Andy Green
3b44a745c9 h2-tx-credit-disallow-overflow 2019-07-08 08:48:58 +01:00
Andy Green
55599fef71 h2: SETTINGS: allow 16M-1 peer max frame size
We only allow 8M-1 when we should allow 16M-1 without blowing a
PROTOCOL ERROR.
2019-07-07 12:19:54 +01:00
Andy Green
cbd58fa458 http: body: make sure to consume body before transaction complete
https://github.com/warmcat/libwebsockets/issues/1625

"dead bodies" that were sent but not processed by lws as server
will clog up and destroy transaction tracking if repeated POSTs
with keepalive are sent to nonexistant paths.

This patch introduces a DISCARD_BODY state that follows BODY
except the payload is not signalled to the protocol callback.
Calling transaction_completed() with pending body makes lws
enter DISCARD_BODY and retry transaction completed only after
the pending body is exhausted.
2019-07-05 07:31:38 +01:00
Andy Green
d727c89d79 cmake: miniz: add as option 2019-07-03 19:46:23 +01:00
Andy Green
e4ec282987 coverity: 2019.03 fixes 2019-07-01 06:39:55 +01:00