compiler server: detect when parent process pipe is broken

closes #18340
This commit is contained in:
Andrew Kelley
2024-07-19 21:38:08 -07:00
parent 397c9174cb
commit 7b1d3e7276

View File

@@ -109,6 +109,7 @@ pub fn deinit(s: *Server) void {
pub fn receiveMessage(s: *Server) !InMessage.Header {
const Header = InMessage.Header;
const fifo = &s.receive_fifo;
var last_amt_zero = false;
while (true) {
const buf = fifo.readableSlice(0);
@@ -136,6 +137,10 @@ pub fn receiveMessage(s: *Server) !InMessage.Header {
const write_buffer = try fifo.writableWithSize(256);
const amt = try s.in.read(write_buffer);
fifo.update(amt);
if (amt == 0) {
if (last_amt_zero) return error.BrokenPipe;
last_amt_zero = true;
}
}
}