Commit Briefs

Omar Polo

rework the regression suite

The tests are still there, the suite is equivalent to the old one, but this one is better structured. The biggest annoyance I had with the old one was that it wasn't straightforward to test only a specific set of tests. It's still impossible, but it's way easier to do it now. This extract all the tests to their own functions. It's overall better in all possible regards.


Omar Polo

update clean target


Omar Polo

sync


Omar Polo

libevent2 fix: unfreeze the client evbuffer

libevent2 has this concept of "freezeness" of a buffer. It's a way to avoid accidentally write/remove data from the wrong "edge" of the buffer. The client_tls_{read,write} functions need to add/drain data from the opposite edge, hence the need for the unfreeze call. This is the minimum change in order to work on libevent2 too. Another way would be to define evbuffer_{un,}freeze as NOP on libevent 1, but it's ugly IMHO.


Omar Polo

improve libevent2 handling

* add configure check * change the way the headers are required (copied from tmux)


Omar Polo

verbose logging for getnameinfo


Omar Polo

update tests

* we don't add a space before the lang anymore * we're more strict in CGI handling: the `invalid' CGI script now triggers a 42 CGI ERROR


Omar Polo

drop now unused trim_req_iri


Omar Polo

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.


Omar Polo

[cgi] switch from pipe(2) to socketpair(2)

We can't use normal pipe(2)s with libevent in some cases. Switch to socketpair(2), which doesn't have the same problem. This has the drawback that it doesn't prevent the CGI script from reading stdout, for instance. (sockets are two-way, pipes only one-way)


Omar Polo

log more details for FastCGI errors

add the reported request id if there's a mismatch and both the gai error and the errno value if getnameinfo fails.


Omar Polo

simplify error check


Omar Polo

typo


Omar Polo

enforce PR_SET_NO_NEW_PRIVS in the logger process

otherwise landlock will refuse to enable itself and the logger process dies.


Omar Polo

forgot include