Releases: uNetworking/uSockets
v0.7.0
Hammer testing everything, always
- We now run hammer_test on macOS, Linux with kqueue, epoll and libuv via GitHub Action on every push and PR
- Hammer tests are now very stable on both macOS and Linux and can be run many times over in a loop for hours, collecting potential bugs
- Fixed OpenSSL socket adoption bug found by hammer test
- Fixed libuv resize bug found by hammer test
- Hammer test now features a slim progress bar with minimal output
- It is now possible to check the port of a listen socket if you specified 0 as port
- It is now possible to put a timeout on a connect socket
- Connect sockets now error in a new event; on_connect_error
- It is now possible to abort a connect socket
- Is is now possible to check if a socket is established or not (listen sockets and connect sockets are not established)
- Sockets can be "defer-closed" next event loop iteration
- Various build fixes on macOS such as Swift examples, GCD event loop
v0.6.0
Server Name Indication
Adding support for SNI; us_socket_context_add_server_name
, us_socket_context_remove_server_name
and us_socket_context_on_server_name
.
Server names are added to a matching tree where wildcard names such as *.google.*
will match things like docs.google.com
unless something more specific exists in the tree such as *.google.com
.
- Fixes a few memory leaks in OpenSSL/BoringSSL implementation when failing to listen (such as when specifying an invalid port, or invalid cert file name, etc).
- Fixes a few building issues and upgrades FreeBSD to a first class platform - I will test macOS paths on FreeBSD, not macOS.
v0.5.0
Close reasons
This library never intended to expose 50 billion different POSIX-style error codes like some other libraries do. Partly because we are not strictly tied to only POSIX or BSD, but can use any TCP implementation where such fine-grained error codes make no sense. Also, most users have no idea what any of those errors actually mean, or don't mean. Exposing way too detailed error codes would make things unnecessarily complex for users.
Instead we want a few granular, generic errors like (for instance):
- ABRUPT_CLOSE (such as TCP RST or the like)
- CLEAN_CLOSE (such as TCP FIN or the like)
- USER_TRIGGERED (custom reason, you the user triggered the close)
- PROTOCOL_ERROR (such as SSL protocol error, or TCP)
The above reasons are just examples, they are not actually used right now. This release adds the ability to pass close reasons around, and we will internally start using them where it makes sense to do so, with time.
v0.4.1
v0.4.0
BoringSSL
The library now compiles with OpenSSL and/or BoringSSL where the latter performs 18% better on short (sub 16kb) messaging.
Fixes
- Fix up http_load_test.c for benchmarking actual servers
- API breaking: connect now also takes source IP or NULL
- We're A+ (LGTM CodeQL score)
- Fix us_timer_ext() of libuv.c