L.S.,
mongoose/civetweb is currently low on my radar (24h per day and a startup getting into gear and all that jazz ;-) )
I'll do this off the top of my head, so a few details may be wrong but the general gist of my repo is:
status: experimental (as usual ;-) ). It has been tested but some parts lightly or even 'superficially'.
The few things which have seen quite a bit of testing (and actual use) are
- the lockup fixes (it was a very hairy situation, sometimes extremely hard to reproduce, but I feel my code is robust now in that regard - while it is quite a larger chunk of the mongoose/civetweb server code than what Sergey did/merged from others. When that issue (#347 IIRC) was a 'hot topic' I stuck with my code because I couldn't get his to perform a close predictably and consistently under all circumstances where my flavor worked). Scenarios like flaky DSL modems combined with a series of old and new browsers/browser-versions which support persistent connections led to some surprises.
- the change in the threading model works and for me at least it works very well. The thread model there for the original mongoose is simple: set it up with N threads, take N+1 clients, each of which open a persistent (or otherwise long-open) connection and the one client per thread approach of mongoose denies client N+1 any access to the server. For a reasonable amount of threads (< 1000; it's not just Windows which fares better with fewer threads to manage) this is very risky as even embedded servers will see multiple clients at a time when they serve data and the viz is done client-side, for example. Browser X keeps connection for several seconds while loading and building a visual, thus denying browser/client Y access once the threadcount has been reached.
Hence I redid the code such that inactive (not transmitting, not receiving, i.e. no data I/O pending) connections are pushed back onto the queue, freeing the thread(s) to pick up waiting connections and/or other connections which report I/O activity.
Word of caution: I never took the time to merge in Sergey's work re Lua integration as I did not need it at the time and afterwards my focus had to move to frontend programming so mongoose got onto the backburner for me.
As I coded a generalized approach to hooking into the I/O processing loop, suitable for custom protocols and stuff like socketIO alike, which approach is quite different from Sergey's, you may have trouble merging with his latest, but it is certainly doable.
Side note / OFF TOPIC:
I did create a version/build for Windows where you could drop a file or directory on a window pane and the mongoose would serve that file/directory tree on the spot. This mongoose flavor was created as a tool for a book I was involved in: that way we could easily offer the JavaScript examples in there as ready-to-go-play, at least for Windows boxes.
The point of this bit is that that commit/branch has seen some serious testing and may thus serve as a reference. There has been done very little to nil work on mongoose from my part after I used it for that purpose.
I intend to revisit (and repurpose) mongoose/civetweb again in the near future but given the amount of frontend work in the pipeline reckon a revival in months, rather than weeks.
Mgt summary:
threadmodel rewrite is pretty solid
I vouch for my 'connection close' handling code, particularly the seemingly 'hairy bits' in there.
somewhat tough to merge the latest as big difference due to generic I/O protocol hooking code vs. Sergey's socketIO
no Lua integration so some merge/mix work to be done there
P.S.: I missed the start of this discussion as a search in my gmail did not uncover the starting email or any other with the same subject line as this one. I saw the civetweb 'happening' when Sergey announced the license change, but did I miss a notice where it says that civetweb has a new mailing list, or have I been predictably ignorant in turning on 'watch' for civetweb in github?
[EDIT: can answer this myself: missed the new mailing list! ]