Skip to content

Releases: uNetworking/uSockets

v0.7.0

14 Feb 10:17
Compare
Choose a tag to compare

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

05 Sep 12:44
Compare
Choose a tag to compare

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

26 Jun 20:01
Compare
Choose a tag to compare

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

24 Jun 00:55
Compare
Choose a tag to compare

Native handles

Adds two functions for getting the native SSL handles, useful for specific tweaking:

  • us_socket_context_get_native_handle returns SSL_CTX or equivalent.
  • us_socket_get_native_handle returns SSL or equivalent (or file descriptor in case of non-SSL).

v0.4.0

24 May 16:52
e2cdfde
Compare
Choose a tag to compare

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

v0.3.5

11 Jan 22:40
Compare
Choose a tag to compare

WolfSSL, fixes

Adds experimental support for WolfSSL as an alternative to OpenSSL and fixes a few bugs and warnings

v0.3.4

18 Nov 18:33
Compare
Choose a tag to compare

SSL fixes

  • Solves the reported issues of OpenSSL per thread error queue not being properly cleared

v0.3.3

08 Nov 13:26
Compare
Choose a tag to compare

Unlink and tls peer verify

  • Properly unlinks free'd socket contexts from the loop (bug fix)
  • Adds tls peer verify features
  • Some fixes to GCD backend

v0.3.2

25 Aug 00:18
Compare
Choose a tag to compare

Epoll & Kqueue

  • Major changes to epoll and kqueue implementation, now merged into one common file
  • Kqueue support now a lot more stable and correct, definitely production ready
  • Bug fixes to two corner cases of epoll implementation

v0.3.1

29 Jul 12:28
Compare
Choose a tag to compare

Kqueue

  • New native eventing backend for macOS and FreeBSD now finished (still a bit experimental)