1.6 KiB


  • handle signals using the self-pipe trick (nothing else seems better nor as portable)
  • close the connection and log when we receive too big messages
  • decide then explicitely document what the max message size should be
  • rx message buffer should be small but should grow if required
  • some functions are not exposed in the bindings, mostly functions related to switching


  • release
  • distribution


  • document the two ways to use LibIPC: either within some Zig code or through the bindings
  • manpages for ipcd, tcpd, pong, pongd


  • still very WIP, even though it works as expected
  • recvmsg is a very stupid copy of the sendmsg fn, EXPECT ERRORS (if used outside libipc)
  • at least one memory error when using Cmsghdr (see below)
	==32374== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
	==32374==    at 0x40554A3: ??? (in /lib/
	==32374==    by 0x40526F9: ??? (in /lib/
	==32374==    by 0x4096B83: ???
	==32374==  Address 0x1ffefff384 is on thread 1's stack
	==32374==  Uninitialised value was created by a client request
	==32374==    at 0x289769: exchange-fd.Cmsghdr(i32).init (exchange-fd.zig:39)
	==32374==    by 0x2808F0: exchange-fd.send_fd (exchange-fd.zig:86)
	==32374==    by 0x27EA97: ipcd.create_service (ipcd.zig:178)
	==32374==    by 0x28117C: ipcd.main (ipcd.zig:224)
	==32374==    by 0x28161E: callMain (start.zig:614)
	==32374==    by 0x28161E: initEventLoopAndCallMain (start.zig:548)
	==32374==    by 0x28161E: callMainWithArgs (start.zig:498)
	==32374==    by 0x28161E: main (start.zig:513)