Commit 2626f17
Barrett Ruth
·
2026-10-26 09:19:26 -0400 EDT
parent 1a6ce3c
fix: close the client signal pipe when the client loop exits (#286)
2 files changed,
+8,
-0
+1,
-0
jump to top
+1,
-0
jump to top
| ... | ... | @@ -31,6 +31,7 @@ pub fn clientLoop(client_sock_fd: i32, env_str: []const u8) !ClientResult { | |
| 31 | 31 | defer lib_posix.close(client_sock_fd); | |
| 32 | 32 | ||
| 33 | 33 | try signal.openSignalPipe(); | |
| 34 | + | defer signal.closeSignalPipe(); | |
| 34 | 35 | signal.installWakeHandler(@backingInt(lib_posix.SIG.WINCH)); | |
| 35 | 36 | ||
| 36 | 37 | // Make socket non-blocking to avoid blocking on writes |
+7,
-0
jump to top
+7,
-0
jump to top
| ... | ... | @@ -37,6 +37,13 @@ pub fn openSignalPipe() !void { | |
| 37 | 37 | sig_pipe = try lib_posix.pipe2(.{ .CLOEXEC = true, .NONBLOCK = true }); | |
| 38 | 38 | } | |
| 39 | 39 | ||
| 40 | + | pub fn closeSignalPipe() void { | |
| 41 | + | const fds = sig_pipe; | |
| 42 | + | sig_pipe = .{ -1, -1 }; | |
| 43 | + | lib_posix.close(fds[0]); | |
| 44 | + | lib_posix.close(fds[1]); | |
| 45 | + | } | |
| 46 | + | ||
| 40 | 47 | pub fn drainSignalPipe() void { | |
| 41 | 48 | var b: [16]u8 = undefined; | |
| 42 | 49 | while (true) { |