Commit Briefs
CHANGES for 0.115 (tags/0.115)
fix segfault due to double-free in got-read-gotconfig
Could be triggered by running 'got fetch' with a "send" block in got.conf. The functions free_fetch_config() and free_send_config() were freeing data via the global "remote" variable instead of their own argument as intended. Patch by Renato Aguiar
add global repository access rules to gotsysd.conf
This feature can be used by server administrators to override or augment access permissions set in gotsys.conf if needed.
add a test case for deny rules in gotsys.conf
Deny rules in gotsys.conf didn't actually work until recently and were lacking test coverage.
fix looping in got-read-pack's version of repaint_parent_commits() as well
This can be observed during 'got send' or 'gotadmin pack/cleanup' in some cases. We would keep processing the same parent commits over and over.
fix creation of gotd.conf deny rules in gotsys-write-conf
Deny rules do not contain the rw/ro authorization mode string. Do not fail if that string is missing. Corresponding tests will be added soon.
fix infinite loop in got_pack_repaint_parent_commits()
This can be observed during 'got send' or 'gotadmin pack/cleanup' in some cases. We would keep processing the same parent commits over and over.
stop trying to start gotd from gotsys-apply-conf if gotd is not running
We should assume that gotd is always running, and we should not be automatically restarting gotd if it has crashed. This misfeature was added early to make setup of the gotsysd regression test suite easier. It was only half working since the attempt to connect to gotd's unix socket after starting it failed due to pledge violations.
make errors reported by gotsys-apply-conf actually visible
Do not close the pipe to gotsysd before trying to send an error message to gotsysd. Print errors to stderr as a last resort.
CHANGES for 0.114 (tags/0.114)
avoid event_loopexit() in gotsysd libexec event handlers when flushing
It seems flushing our final message can fail if we forcefully exit the event loop here. This would leave gotsysd's sysconf process stuck in a state where it was waiting for a message which never arrived.
use imsgbuf_flush() instead of gotsysd_imsg_flush() in libexec event handlers
The gotsysd_imsg_flush() wrapper enforces a sync write by polling the file descriptor and writing data in a loop. Since libevent already does polling for us we can simply use imsgbuf_flush() here instead.
always consume authorized keys messages in gotsys-userkeys
THe main process will always send these messages so don't skip parsing them even if we are going to ignore the current user.
stop running ssh with -q by default
The -q option suppresses too many important errors, including the warning printed when a host key has changed. Requiring users to pass -v in order to see this message is too cumbersome.
untangle committer and author_time parameters of got_worktree_commit()
Make the semantics of the author_time parameter self-contained by treating author_time == 0 as the fallback case, instead of treating committer == NULL as the fallback case. Having the semantics of one parameter depend on the semantics of another might lead to subtle bugs introduced during potential future refactoring of this code.
cvg: add author_time argument to got_worktree_cvg_commit()
No functional change, but keeps the code in sync with got. Patch by Sven M. Hallberg