Commit Briefs
explicitly use c->fd instead of fd
Yep, fd should be the file descriptor, but for lazyness when manually calling the function sometimes we supply 0 as fd and event. Instead of fixing the usage, do as other of such functions do in this circumstances: use c->fd.
mark backend as FCGI_READY when getting a fd
otherwise clients will remain stuck waiting for a pending request that doesn't exist (see apply_fastcgi switch.)
use the correct document root
pass the correct loc_off to the executor, so the various variables that depends on the matched location (like DOCUMENT_ROOT) are computed correctly.
fastcgi: a first implementation (github/master, origin/master)
Not production-ready yet, but it's a start. This adds a third ``backend'' for gmid: until now there it served local files or CGI scripts, now FastCGI applications too. FastCGI is meant to be an improvement over CGI: instead of exec'ing a script for every request, it allows to open a single connection to an ``application'' and send the requests/receive the responses over that socket using a simple binary protocol. At the moment gmid supports three different methods of opening a fastcgi connection: - local unix sockets, with: fastcgi "/path/to/sock" - network sockets, with: fastcgi tcp "host" [port] port defaults to 9000 and can be either a string or a number - subprocess, with: fastcgi spawn "/path/to/program" the fastcgi protocol is done over the executed program stdin of these, the last is only for testing and may be removed in the future. P.S.: the fastcgi rule is per-location of course :)
ensure %p (path) is always absolute
with the recent changes, sometimes the path may not start with a '/'. This ensures that %s is ALWAYS an absolute path.
don't save the directory fd in c->pfd
scandir_fd already calls closedir, which in turns closes the fd
list instead of fixed-size array for vhosts and locations
saves some bytes of memory and removes the limit on the maximum number of vhosts and location blocks.
move all sandbox-related code to sandbox.c
while there, add capsicum for the logger process