Commit Briefs



Thomas Adam

fmt


Thomas Adam

remove GOT_ERR_ITER_BUSY from got_commit_graph_iter_start()

Just clear any left-over iteration state and begin a fresh iteration instead of returning GOT_ERR_ITER_BUSY if the caller did not loop through the entire graph. This change currently doesn't matter much since all existing callers only do a single pass over the graph. But it frees up an error code and makes this API more flexible.



Thomas Adam

hide a pointless end-of-file error on imsg pipe in libexec helpers

This error popped up in op's regress builder: got-fetch-pack: error 118 "test-repo: Permission denied": poll: unexpected end of file ok op@



Thomas Adam

split gotd/session.c into session_read.c and session_write.c

This makes it easier to tweak the read/write code paths separately.



Thomas Adam

get rid of gotd client_id field where it is not needed

This ID was necessary back when session and repo processes supported connections from multiple clients. Nowadays, these processes run per connection and exit once a single client session has been served. The other processes already identify the client via the session/repo file descriptor which has sent an imsg.



Thomas Adam

track session state in struct gotd_session instead of got_session_client

Eventually, I would like to disconnect clients before notifications are generated. This change helps pave the way towards this goal.


Thomas Adam

got-notify-email: bufferize smtp parsing

instead of read(2)ing one byte at the time, use a temporary buffer. Special care is needed for the regress where all the replies are queued up-front instead of a real SMTP server where we'd get a reply only after a command. ok and improvements stsp@


Thomas Adam

got-notify-email: split dial() out of send_email()

This allows to reduce the set of pledge(2) promises needed at runtime down to only "stdio" which will also help sandboxing -portable. ok stsp


Thomas Adam

mark smtp_timeout as static


Thomas Adam

fmt


Thomas Adam

plug memleak in parsing the notify options

The strings need to be released regardless of the process parsing the file.


Thomas Adam

portable: enable got-notify-email

Now that gotd has the start of helpers, got-notify-email is the first. This is still behind the --enable-gotd flag.


Thomas Adam

add initial support for commit notifications to gotd(8)

At present only email notifications are implemented. Code for HTTP notifications is not yet finished, hence HTTP-related documentation remains hidden for now. This adds a new 'notify' process which has an "exec" pledge. It runs helper programs which implement the notification transport layer, such as got-notify-email which speaks SMTP. This design avoids having to link all of gotd with network libraries and related crypto libraries. Notification content is generated by the 'repo_write' process. Commit log messages and diffstats are written to a file which the 'notify' process will pass on to its helpers on stdin. The default output looks similar to 'got log -d'. If too many new commits are present the output looks similar to 'got log -s' instead. Tags always look like 'got tag -l'. The session process coordinates generation of notifications. It maintains a notification queue which holds one notification per updated reference, and passes notification requests from this queue to the 'repo_write' process for notification content creation and then to the 'notify' process for notification delivery. Only one notification can be in flight at a time to avoid file descriptor starvation if many references get updated in a single client session. ok op@


Thomas Adam

make output of 'got ref -l' more consistent

Ensure that got ref -l provides consistent output regardless of whether references are packed or not. Problem reported by naddy@ Also make 'got ref -l name' work consistently when the provided argument is the name of a reference, rather than a ref-prefix. ok naddy


Thomas Adam

introduce got_poll_read_full_timeout()

Upcoming gotd code needs to avoid infinite network socket read timeouts.



Thomas Adam

introduce got_opentemp_truncatefd()



Thomas Adam

CHANGES for 0.91