Releases: hrissan/crablib
Releases · hrissan/crablib
Important core bug fix, optional moved out of details namespace
Low level
optionalmoved out ofdetailsnamespace, 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_LIBEVoverlibev(requiressudo apt install libev-dev). CFRunLooplow-level implementaion merged (partial support forTLSfor now, full support is expected in near future).crab::Randomnow uses PCG32 instead ofstd::mt19337. Slow construction and number generation ofstd::mt19337consumed too much CPU for lots of very short Web Messages.
HTTP
- To avoid some
NATsdisconnecting Web Sockets,OPCODE_PINGis 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.0clients
Incompatible API changes
- sha1 and base64 moved into
crabnamespace