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

1902 commits

Author SHA1 Message Date
Andy Green
bd6fc106d9 lws_write_ws_flags helper 2018-04-06 10:38:03 +08:00
Fabio Alessandrelli
94f3981bef mbedtls: wrapper: client: Force mbedTLS to attemp to verify cert
AG: unlike openssl, mbedtls does not load the system trust store.
So this change will make client tls operations that work OK on openssl fail on
mbedtls unless you provide the correct CA cert.

This allows lws to distinguish between untrusted CAs, hostname
mismatches, expired certificates.

NOTE: LCCSCF_ALLOW_SELFSIGNED actually allows for untrusted CAs, and
will also skip hostname verification. This is somewhat a limitiation of
the current lws verification process.

AG: improve error reporting up to the CLIENT_CONNECTION_ERROR argument
and add a note specific to mbedtls in the test client.  Adapt the test
client to note the CA requirement if built with mbedTLS.  Adapt the
minimal test clients to have the CAs available and use them if mbedTLS.
2018-04-06 10:38:03 +08:00
Andy Green
7cef6fcc7b udp 2018-04-06 10:38:03 +08:00
Andy Green
1820212724 lws_set_timer_usecs: change to usec resolution
This replaces the existing, unreleased lws_set_timer(wsi, secs) with
lws_set_timer_usecs(wsi, usecs).

wsi with a timer waiting are added to a linked-list sorted by the
timer trigger time.

1) poll() timeout (ie, poll wait) is trimmed to the nearest ms of the
first waiting timer if the default poll wait is longer than the
interval until the first waiting timer.

The linked-list of waiting timers is checked every entry and exit
from poll()... if no timers waiting or none reached their time
this costs almost nothing.

2) libuv: the earliest hrtimer is checked after every IO, again this
is costing nothing if the list head is NULL.  If the case there
are hrtimers on the list, it costs a getimeofday (a VDSO in linux)
and more only if any of the timers have fired.

In addition on entry to libuv idle, if there are any waiting hrtimers
on the list, a libuv timer is used to force a wake in case we stay
idle (the libuv timer has ms resolution).

3) libev: not implemented

4) libevent: not implemented

Warnings are logged in the api is used on an event backend without
support.  Patches welcome to add support similarly to libuv.
2018-04-06 10:38:03 +08:00
Andy Green
9cf641dece minimal: minimal-raw-adopt-tcp 2018-04-06 10:38:03 +08:00
Andy Green
feeca915b9 lwsws: fix inherited vhost info 2018-04-06 10:38:03 +08:00
Andy Green
7aa511d8c5 minimal: minimal raw vhost 2018-04-06 10:38:03 +08:00
Andy Green
03acd5a24d valgrind: context creation error path 2018-04-06 10:38:03 +08:00
Andy Green
3e4a1f3b0e client: choose right vh client ssl_ctx 2018-04-06 10:38:03 +08:00
Andy Green
b04708178a minimal: http-server-tls 2018-04-06 10:38:03 +08:00
Andy Green
5ecec970b2 minimal: dynamic http server 2018-04-06 10:38:03 +08:00
Andy Green
2519ac9ced coverity 188316: supposed deadcode 2018-04-06 10:38:03 +08:00
Andy Green
5fe9335b36 coverity 188416: possibility of NULL iface 2018-04-06 10:38:03 +08:00
Andy Green
0b65112ec4 coverity 188317: more fiddling around NO_EXTENSIONS 2018-04-06 10:38:03 +08:00
Andy Green
5acbb04b51 unixskt: add test server support and cleanup inode on exit 2018-04-06 10:38:03 +08:00
Andy Green
422cbf24bd align private LWS_NO_EXTENSIONS to be same as public LWS_WITHOUT_EXTENSIONS
This is just an internal mass change of LWS_NO_EXTENSIONS to
LWS_WITHOUT_EXTENSIONS to match the public name and eliminate
all instances of LWS_NO_EXTENSIONS.
2018-04-06 10:38:03 +08:00
Andy Green
80e3e723e3 coverity 188326: hide supposed dead code from coverity with NO_EXTENSIONS 2018-04-06 10:38:03 +08:00
Andy Green
95f8328ffc coverity 188320: hide supposed dead code from coverity with NO_EXTENSIONS 2018-04-06 10:38:03 +08:00
Andy Green
e157fcfe37 coverity 188316: hide supposed dead code from coverity with NO_EXTENSIONS 2018-04-06 10:38:03 +08:00
Andy Green
b0b10001fe coverity 188318: try to hide fake unused var from coverity 2018-04-06 10:38:03 +08:00
Andy Green
b9a3b808fb coverity 188319: hide logically deaf code from coverity when WITHOUT_EXTENSIONS 2018-04-06 10:38:03 +08:00
Andy Green
313cbb5350 coverity 188323: hide logically deaf code from coverity when WITHOUT_EXTENSIONS 2018-04-06 10:38:03 +08:00
Andy Green
d237ac1b95 coverity 188312: hide logically deaf code from coverity when WITHOUT_EXTENSIONS
There's nothing wrong with this but coverity chokes on it.

Also 188317 "solved" by this.
2018-04-06 10:38:03 +08:00
Andy Green
775f7bce09 coverity 188313: client: avoid possibility of strlen on NULL cce 2018-04-06 10:38:03 +08:00
Andy Green
bfc8a5cb1b coverity 188325: client: require at least once vhost 2018-04-06 10:38:03 +08:00
Andy Green
5a8fca6f79 coverity 188322: confirm wsi->protocol non-NULL before CONNECTION_ERROR 2018-04-06 10:38:03 +08:00
Andy Green
da38a17a31 coverity 188321: reject wsi with NULL vhost earlier 2018-04-06 10:38:03 +08:00
Andy Green
ea8c44d799 coverity 188315: reject wsi with NULL vhost earlier 2018-04-06 10:38:03 +08:00
Andy Green
613ae7921a coverity 188314: reject wsi with NULL vhost earlier 2018-04-06 10:38:03 +08:00
Andy Green
3775ac9d2e coverity 169270: client: handle NULL protocol 2018-04-06 10:38:03 +08:00
Andy Green
0e8b3fed12 coverity 188324: dead code when no extensions 2018-04-06 10:38:03 +08:00
Andy Green
49a694bd1e minimal: add helpers and adapt all users 2018-04-06 10:38:03 +08:00
Andy Green
b8fb8c5b15 minimal: multivhost + refactor 2018-04-06 10:38:03 +08:00
Andy Green
a91ed1fa4c client: CONNECTION_ERROR: target at local protocol if possible
Until now LWS_CALLBACK_CLIENT_CONNECTION_ERROR handling could only
take place on protocols[0].

This patch changes LWS_CALLBACK_CLIENT_CONNECTION_ERROR to be sent
to the protocol the client connection was bound to... if nothing
better that is still protocols[0], but if you created the client
connection using info.local_protocol_name, it will now be sent to
the bound protocol handler instead.
2018-04-06 10:38:02 +08:00
Andy Green
3ed755e52d client: add local_protocol_name binding to info
In the case you are creating a client connection, there may be
no relationship between the ws protocol you want to bind to at
the server, and the local protocol name you want the wsi to
bind to at the client.

This introduces a new client info struct member .local_protocol_name,
if it is NULL then all is as before, otherwise it binds the client
wsi to the named protocol early in the process, and .protocol is used
for the negotiation with the ws server.

This allows you to bind client wsi to local protocol handlers that
don't share the name of the ws protocol the connection will try
to negotiate.
2018-04-06 10:38:02 +08:00
Andy Green
2b932c500f LWS_CALLBACK_CLIENT_CLOSED: split out client and server CLOSE callback
Until now LWS_CALLBACK_CLOSED has served the same for
client and server connections.  This introduces a new
LWS_CALLBACK_CLIENT_CLOSE which is sent on established
ws client connections, insread of LWS_CALLBACK_CLOSED.

LWS_CALLBACK_CLOSED continues to be sent when server
ws connections close.
2018-04-06 10:38:02 +08:00
Andy Green
302f8fad82 h2 ws: fixes against chrome 2018-04-06 10:38:02 +08:00
Andy Green
0e39e7f5c6 LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT: protect against zero length packet causing spin when deciding if tls or not tls
https://github.com/warmcat/libwebsockets/pull/1206
2018-04-06 10:38:02 +08:00
Andy Green
7ad8332838 minimal-ws-server-threads 2018-04-06 10:38:02 +08:00
Andy Green
61376bd734 minimal: updates 2018-04-06 10:38:02 +08:00
Andy Green
aae2c24678 lws_snprintf 2018-03-12 09:28:42 +08:00
Andy Green
5fc2598eac smp: force cancel on pt that was assigned new wsi 2018-03-11 18:07:16 +08:00
Andy Green
ad5dbda120 access log: only produce when vh log file set 2018-03-11 18:07:16 +08:00
Andy Green
862ab64d62 vhost: handle creation failure without unbalanced call of PROTOCOL_DESTROY 2018-03-11 18:07:16 +08:00
Andy Green
dc15a77dfa openssl: avoid warning on versions with ECDH header 2018-03-11 18:07:16 +08:00
Andy Green
cb70b6e633 win32: remove snprintf mangling
Everything in lws outside esp32 was changed to use lws_snprintf() a while ago.

This fixes a couple of stragglers and removes the preprocessor mangling.
2018-03-09 08:49:59 +08:00
Andy Green
7f830195d6 docs: add note on lws_http_client_http_response about when to call it
https://github.com/warmcat/libwebsockets/issues/1202
2018-03-09 08:38:48 +08:00
Joe Littlejohn
e333d1a751 Add 'HS: ws upgrade unauthorized' on receiving 401
In the case that the connection cannot be established because the caller
is unauthorized, it's likely they have to do something to gain
authorization before retrying. This change introduces a new message that
can be checked for to understand more about why the connection has
failed to establish.

Closes #1200
2018-03-08 09:02:53 +08:00
Joe Littlejohn
f1ad1c6b1a Check status before checking for Sec-WebSocket-Accept
If the server rejects the attempt to establish a connection by returning
a response status other than 101, then it will not include the
Sec-WebSocket-Accept header. We need to check for 101 status (and return
an appropriate error message) before looking for the accept header.

See #1200
2018-03-08 09:02:53 +08:00
Andy Green
b490079b47 vhost: add 404 handler url option
This allows you to set a 404 handler URL on a vhost.

The necessary user code looks like...

    info.error_document_404 = "/404.html";

... at vhost-creation time.

In the existing lws_return_http_status() api, if it sees
the vhost has an "error_document_404" path set and that
we are trying to report a 404, it changes the action
instead to a redirect to the error_document_404 path.

The redirect target is returned using 404 status code.

If the redirect target doesn't exist, then it falls back
to just reporting the simple canned 404.
2018-03-08 09:01:14 +08:00