- close with event for
TCPSocketis now publicly accessible RunLoopinstance now contains public instance ofRandomwith the namernd- some linter warnings removed from code
- CRC32 and CRC32C added to crypto algorithms
- fixed bug when HTTP Time header was cached by server for 500 seconds, not milliseconds
- example of fair resource-bound API server. TODO - improve example
SignalStoprenamed toSignaland now accepts list of signals. Empty list means to detect genericCtrl-Cand sorta works onLinux,MacandWindows.crab::Threadto wrap creation ofstd::threadwith RunLoop and perform raceless cancellation- Recommended
Randomseeding - Web Socket masking is now 8x faster
- MD5 added to crypto algorithms
Bugs fixed
sigprocmaskwas changedpthread_sigmask, so thatSignalwork in multithreaded apps
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.
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
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
ReleaseNotes.md is new in version 0.8.0. Before that, commit history served as a release notes.