Commits


gotwebd: start to implement the auth feature rearranged the code a bit; let's use a bufferevent since we're not going to use imsg for this anyway. for now it just replies back with a dummy URL.


gotsh: fix usage


add an auth process to gotwebd (WIP: it receives requests, but does nothing)


implement gotsh weblogin command


Plug some memory leaks in got-{send,fetch}-pack my_capabilities was leaked in both got-send-pack and got-fetch-pack and needed freeing it in both. ok op@


revert part of previous commit which wasn't actually needed for memleak checks


fix all remaining gotwebd leaks the regress memleak checker was flagging


free gotweb.c iev_server on shutdown


also clear iev_gotweb->ibuf before exit to appease the memleak checker


free iev_gotweb before exiting; harmless leak but 'make regress' flags it


reduce the send_response() timeout For some reason this timeout was blocking long enough to make other waiting client connections time out. Reduce the amount of retries.


track per-request connection state in struct request, not struct socket


do not keep re-arming the accept pause timer in gotwebd if already armed


log fcgi requests which have timed out


expose error status of gotweb_process_request() to the caller


fix read error handling in gotweb_render_patch() and check error before writing


fix previous commit (build breakage)


do not send fcgi end record trailer to broken connections


fix error handling in fcgi_forward_response()


make writes in fcgi_forward_response() time out to avoid gotwebd getting stuck


set CLOEXEC and NONBLOCK flags on the pipe between server and gotweb procs


stop using EV_PERSIST for fcgi_request and fix error handling


fix format string specifier for c->request_id


remove gotwebd-specific libexec helpers gotwebd now uses the same set of libexec helpers as used by got and tog. ok op@


split gotwebd into a server process and a gotweb process As before, the server process accepts incoming FCGI requests and runs in the web server's chroot. The gotweb process runs outside chroot. This allows for browsing repositories anywhere on the file system, saving disk space on servers and avoiding a repository eynchronization delay. The gotweb process runs libexec helpers installed in /usr/local. Installing static binaries in the chroot is no longer needed for gotwebd to function. This helps -portable. gotwebd now defaults to a new user account, _gotwebd, though the www user can still be used if desired. The gotwebd.conf repos_path directive is no longer relative to the chroot directory but is now an absolute path. Existing configs may need to be adjusted accordingly. ok op@