Skip to content

Releases: hrissan/crablib

Important core bug fix, optional moved out of details namespace

02 Nov 12:14
Compare
Choose a tag to compare

Low level

  • optional moved out of details namespace, tiny fix in optional

Bugs fixed

  • When setting socket options to 1, they were set to uninitialized value instead. Worked because luck plus true = anything non-zero.

Better HTTP, WebSockets

22 Oct 14:13
Compare
Choose a tag to compare

Low level

  • Experimental TLS code (not for use in a wild yet)
  • Simple crab::optional for using older C++ standard
  • Random is adapted to std containers

HTTP

  • Streaming of HTTP bodies (both upload and download)
  • New HTTP URI parser by AK

Bugs fixed

  • WebSockets now support control frames between message chunks

Incompatible changes

  • New callbacks design for WebSockets and postponing normal HTTP responses
  • Stricter integer parser might break existing products

2 new impls (libev, CFRunLoop), PCG32 random, improved HTTP parsers, some fixes

20 May 09:42
Compare
Choose a tag to compare

Low level

  • New expeimental low-level implementation added, CRAB_IMPL_LIBEV over libev (requires sudo apt install libev-dev).
  • CFRunLoop low-level implementaion merged (partial support for TLS for now, full support is expected in near future).
  • crab::Random now uses PCG32 instead of std::mt19337. Slow construction and number generation of std::mt19337 consumed too much CPU for lots of very short Web Messages.

HTTP

  • To avoid some NATs disconnecting Web Sockets, OPCODE_PING is sent every 45 seconds (Timeout selected to be a bit less than TCP keepalive, which is 50 seconds for major browsers)
  • New HTTP Query parser by AK
  • New HTTP Cookie parser by AK

Bugs fixed

  • HTTP socket shutdown was performed incorrectly for some HTTP/1.0 clients

Incompatible API changes

  • sha1 and base64 moved into crab namespace