Commit Briefs

Omar Polo

gotwebd: lower log priority of unexpected disconnections

no need to be so loud when a client disconnects earlier than expected, log it only in verbose mode. Don't log GOT_ERR_CANCELLED too since that is only used to communicate the callers that we need to stop. ok stsp@


Omar Polo

gotwebd: provide gotweb_render_page() entrypoint for all pages

simplify gotweb_process_request more, handling all the pages inside the big switch. There's only one entrypoint for rendering the templates gotweb_render_page() that takes the page' content as argument. The only real difference is that gotweb_render_index() now skips directory entries which fails to handle. ok tracey@


Omar Polo

gotwebd: handle short reads and timeouts

If a short read happens, or if all the fastcgi record to read don't fit in the buffer, gotwebd fails to continue reading and hits the timeout. If this happens before gotweb_process_request is called, it will crash in gotweb_free_transport since c->t will be NULL. This register the event with EV_PERSIST so fcgi_request is called again when there's more to read and guards gotweb_free_transport. It also makes spaces for the records as soon as they're successfully parsed. With lots of help from stsp ok stsp@


Omar Polo

gotwebd: add an RSS feed for the tags

ok tracey@


Omar Polo

gotwebd: use DOCUMENT_URI rather than SCRIPT_NAME

the latter is empty when serving from a directory-like path prefix with an httpd.conf(5) as per gotwebd(8). ok tracey@


Omar Polo

gotwebd: start using the template system

ok tracey@


Omar Polo

gotwebd: percent-encode generated URLs

This adds a new helper function `gotweb_link' that outputs an HTML link with the parameter correctly escaped. ok stsp@


Omar Polo

gotwebd: plug leak in fcgi_parse_params

fcgi_parse_params parses fastcgi parameters into a list. (This is a leftover from slowcgi where that list is later used to populate the environment of the CGI process.) However, this list is never looked at and its memory never released, so just drop it. Make the matching on fastcgi parameters name strictier by checking also that the length is the one we expect; otherwise we might pick up parameters with the same prefix string (i.e. FOO vs FOO_WITH_SUFFIX) While here turn some bcopy into memcpy and simplify some if-nesting too. Fix the reading from an un-initialized pointer that I introduced in a previous commit. ok stsp@


Omar Polo

gotwebd: use SCRIPT_NAME to derive URLs

This makes gotwebd use SCRIPT_NAME instead of the DOCUMENT_ROOT fastcgi param to generate the links to the assets and changes some links so every page is consistently linked with a relative URL. It allows to drop the `root "/"' in the location for fastcgi and, as a bonus, also makes possible to run gotwebd on non "/" paths. ok stsp@


Omar Polo

gotwebd: add fcgi_printf

instead of fcgi_gen_response which outputs only a fixed strings provide a printf-like fcgi_printf: it greatly simplifies the generation of the HTML pages. While here also (probably) fix some HTML errors: the output was verified with the W3C validator and it's correct (in the sense that the tags are properly closed, there are still some other things the validator complains about.) ok/encouragement baseprime@, ok jamsek Thanks for reading such a boring diff!


Omar Polo

gotwebd: add a some buffering

This adds some buffering to fcgi_gen_binary_response so that we don't end up sending too many (very) small fastcgi records. While here also make fcgi_send_response non-void and make its errors "sticky". ok tracey@


Omar Polo

gotwebd: avoid large allocation per fcgi record

while here also wrap fcgi_send_response to make sure we don't end up trying to send a fcgi record bigger than allowed. ok tracey@


Tracey Emery

tweak op@ log_debug output


Omar Polo

fix logging of fcgi_send_response

as originally intended by tracey@


Omar Polo

gotwebd: handle partial writes

fcgi_send_response can end up trying to send big amount of data, in particular when serving blobs. if a write failure occurs, gotwebd and httpd go out of sync and "bad stuff happens". debugged with and ok tracey@