This should prevent a use-after-free crash I observed in gotwebd. ok op@
While here, remove completely the libevent handling of SIGPIPE in favour of the already existing signal(3) call to ignore it; there's no point in logging a SIGPIPE.
Diff from Kyle Ackerman, thank you! I've added a imsg_free() call before the break too.
I always find confusing if IMSG_SIZE_CHECK() takes pointers or not, and we had at least a few instances of wrong usages, so inline (with exact size checks) and remove the macro. ok stsp@
It only had 4 slots so was never quite useful, and sharing of sock->pack_fds across cached repositories seems problematic. with help from + ok op@
main_compose_sockets() has the 'feature' of implicitly dup(2)'ing the passed file descriptior. But it's not what we need for the temp fds, since those needs to be unique per-children. debugged with stsp@
allows to run gotwebd from the got checkout again.
suggested by stsp@
concern raised by stsp@
proc.c really shines when there's a network of different types of processes, potentially with a various number of instances each, that needs to exchange messages. Gotwebd instead has a much simpler design, and using proc.c causes more overhead (/headaches) than it solves. So, this attempts to provide the same functionalities but with a much simpler implementation that fits gotwebd better. ok stsp@