Commit Briefs

Stefan Sperling

plug a memory leak in 'got blame'

The leak is present in got_privsep_recv_traversed_commits. There is an edge case where it receives consecutive imsgs. The first behaves as normal and we got_object_id_dup the last commit id for changed_commit_id. The following imsg(s) then still allocates the last commit id, leaking the one(s) prior allocated. Patch by Kyle Ackerman




Omar Polo

fmt


Stefan Sperling

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.



Stefan Sperling

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@



Stefan Sperling

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

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



Stefan Sperling

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.



Stefan Sperling

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.


Omar Polo

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@


Omar Polo

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