Releases: hrissan/crablib
Releases · hrissan/crablib
Important core bug fix, optional moved out of details namespace
Low level
optional
moved out ofdetails
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
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
Pre-release
Low level
- New expeimental low-level implementation added,
CRAB_IMPL_LIBEV
overlibev
(requiressudo apt install libev-dev
). CFRunLoop
low-level implementaion merged (partial support forTLS
for now, full support is expected in near future).crab::Random
now uses PCG32 instead ofstd::mt19337
. Slow construction and number generation ofstd::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