Commits
- Commit:
4cd25209651f224be8c34d6006ef689963ce37d5
- From:
- Omar Polo <op@omarpolo.com>
- Date:
one FastCGI connection per client
FastCGI is designed to multiplex requests over a single connection, so
ideally the server can open only one connection per worker to the
FastCGI application and that's that.
Doing this kind of multiplexing makes the code harder to follow and
easier to break/leak etc on the gmid side however. OpenBSD' httpd
seems to open one connection per client, so why can't we too?
One connection per request is still way better (lighter) than using
CGI, and we can avoid all the pitfalls of the multiplexing (keeping
track of "live ids", properly shut down etc...)
- Commit:
efb6210d7745c9466ab9a16f23d1549523428ef7
- From:
- Omar Polo <op@omarpolo.com>
- Date:
improve libevent2 handling
* add configure check
* change the way the headers are required (copied from tmux)
- Commit:
fa0299a26d6e0cc83135a7f46e74710a9d5a8efa
- From:
- Omar Polo <op@omarpolo.com>
- Date:
drop now unused trim_req_iri
- Commit:
efe7d180292726775fb3ae5e6af593490a264c60
- From:
- Omar Polo <op@omarpolo.com>
- Date:
new I/O handling on top of bufferevents
This is a big change in how gmid handles I/O. Initially we used a
hand-written loop over poll(2), that then was evolved into something
powered by libevent basic API. This meant that there were a lot of
small "asynchronous" function that did one step, eventually scheduling
the re-execution, that called each others in a chain.
The new implementation revolves completely around libevent'
bufferevents. It's more clear, as everything is implemented around the
client_read and client_write functions.
There is still space for improvements, like adding timeouts for one, but
it's solid enough to be committed as is and then further improved.
- Commit:
741b69be96397e0ec6db0c84b4ead4f41363ea98
- From:
- Omar Polo <op@omarpolo.com>
- Date:
fastcgi completely asynchronous
This changes the fastcgi implementation from a blocking I/O to an
async implementation on top of libevent' bufferevents.
Should improve the responsiveness of gmid especially when using remote
fastcgi applications.
- Commit:
41395640e09aac151159bfd8cf33ed4f32725157
- From:
- Omar Polo <op@omarpolo.com>
- Date:
introduce IMSG_LOG_REQUEST
- Commit:
f361f7997917a42a7b377d2764c5fb7467cccb62
- From:
- Omar Polo <op@omarpolo.com>
- Date:
move version number to configure script
- Commit:
391825e3604deef4c9dc3267dc2b6c89fc79958a
- From:
- Omar Polo <op@omarpolo.com>
- Date:
move parse_portno to gmid.c
it's used only to parse the -p flag. While there add check_port_num
to check the range for the port.
- Commit:
a8a1f439210de9538b196c6bb5470c306379128c
- From:
- Omar Polo <op@omarpolo.com>
- Date:
style(9)-ify
- Commit:
090b8a89faa34cdc41c41e32845f1f5b444536e4
- From:
- Omar Polo <op@omarpolo.com>
- Date:
gracefully shut down fastcgi backends
we need to delete the events associated with the backends, otherwise
the server process won't ever quit.
Here, we add a pending counter to every backend and shut down
immediately if they aren't handling any client; otherwise we try to
close them as soon as possible (i.e. when they close the connection to
the last connected client.)
- Commit:
3b21cca385c403247960cfe9385dda1d56f28670
- From:
- Omar Polo <op@omarpolo.com>
- Date:
allow to define macros in the config file
Macros can be defined at the top of the configuration file:
dir = "/var/gemini"
cert = "/etc/keys"
and re-used later, for example
server "foo" {
root "$dir/foo" # -> /var/gemini/foo
cert "$cert/foo.pem" # -> /etc/keys/foo.pem
}
- Commit:
fdb43a4c0e347c20c0f13c3145165393c6c10883
- From:
- Omar Polo <op@omarpolo.com>
- Date:
define GMID_STRING and reuse-it
GMID_VERSION follows the CGI/FastCGI style, i.e. project_name/version.
Define GMID_STRING with a more "human" variant "project_name version",
and reuse that in the --help and --version codepath.
- Commit:
74f0778b9ae93a700d8b0f759b05f24e69f54921
- From:
- Omar Polo <op@omarpolo.com>
- Date:
drop the dependency on lex by implementing yylex by ourselves
The actual implementation is based off doas' parse.y. This gave us
various benefits, like cleaner code, \ to break long lines, better
handling of quotes etc...
- Commit:
e952c5052a0c524eee6d8151b1af96ce2c94ca18
- From:
- Omar Polo <op@omarpolo.com>
- Date:
allow sending fd to log on to the logger process
the logger process now can receive a file descriptor to write logs
to. At the moment the logic is simple, if it receives a file it logs
there, otherwise it logs to syslog. This will allow to log on custom
log files.
- Commit:
f740b61b03c9e31f4915ee7d7444d64fc320b41c
- From:
- Omar Polo <op@omarpolo.com>
- Date:
more params from and send a custom list