Commit Briefs


5f4e1ba7c0 Stefan Sperling

avoid double-close of gotd_reload_conf_fd



c58432778b Stefan Sperling

Xr gotctl and document SIGHUP issue


b8002eb1bd Stefan Sperling

implement reload support in gotd, triggered via gotctl reload

Reload must be triggered via 'gotctl reload' rather than SIGHUP because once gotd has dropped root privileges the gotd-secrets.conf file becomes permanently inaccessible. When SIGHUP is received gotd now logs a message which points the user at 'gotctl reload'.


db8be6f20a Stefan Sperling

set close-on-exec flag on client connections in gotd parent process

Ensures that existing clients will be properly disconnected once the gotd reload feature is introduced.


8d07ef48ec Stefan Sperling

remove closefrom() in gotd when gotsys is run

closefrom doesn't have the desired effect as it may affect unrelated open files in the parent process. The right way to deal with this seems to be setting the close-on-exec flag on file descriptors instead.


52b119c266 Stefan Sperling

drop pointless imsgbuf_allow_fdpass() calls from gotctl





30f4f45ab1 Stefan Sperling

send request timeout to session_read so it no longer needs to read gotd.conf

Also stop reading gotd.conf in repo_read, which is a trivial no-op.



05d7513b8f Stefan Sperling

remove duplicate break statement


2377fc9127 Stefan Sperling

send notification targets to notify process

This removes the need for the notify process to read gotd.conf, ensuring consistent run-time behaviour when gotd.conf is edited while gotd is running.


9a1bdb2e47 Stefan Sperling

send notification configuration to the gotd session_write process

This allows the session_write process to work without reading gotd.conf. Again, we gain consistent run-time behaviour since changes to the notification configuration in gotd.conf will not take effect until gotd is restarted. However, the notify proccess still needs the same fix.



d4e6da3e39 Stefan Sperling

small tweak to the output of gotctl info for clarity


c944bea60e Stefan Sperling

keep disconnecting gotd clients when important child processes exit

This should fix a regression introduced in commit dda4473541d84973dd43a16f2f79ff0ce5f93dfe (make gotd run 'gotsys check' on gotsys.conf commits before accepting them), where I removed a call to the disconnect() function in proc_done(). We have now observed stale client sessions accumulating on got.gameoftrees.org, blocking new connections from anonymous users. This commit fixes the most likely reason for that issue.


34d6901192 Stefan Sperling

in gotctl info, display the time when a client connection was created

Also ensure that the repository name will always be displayed. Once the repo/session processes had exited the repository name was no longer available. Cache it in the client data structure to avoid losing it.





7f2e8a431e Stefan Sperling

add build instructions for gotsysd


0b2937c26f Stefan Sperling

send protected references from gotd parent process to repo_write process

As a result, the repo_write process no longer needs to read gotd.conf. This ensures consistent run-time behaviour with respect to protected references if gotd.conf is edited while gotd is running.