| ... | ... | @@ -109,6 +109,7 @@ pub fn deinit(s: *Server) void { |
| 109 | 109 | pub fn receiveMessage(s: *Server) !InMessage.Header { |
| 110 | 110 | const Header = InMessage.Header; |
| 111 | 111 | const fifo = &s.receive_fifo; |
| 112 | var last_amt_zero = false; |
| 112 | 113 | |
| 113 | 114 | while (true) { |
| 114 | 115 | const buf = fifo.readableSlice(0); |
| ... | ... | @@ -136,6 +137,10 @@ pub fn receiveMessage(s: *Server) !InMessage.Header { |
| 136 | 137 | const write_buffer = try fifo.writableWithSize(256); |
| 137 | 138 | const amt = try s.in.read(write_buffer); |
| 138 | 139 | fifo.update(amt); |
| 140 | if (amt == 0) { |
| 141 | if (last_amt_zero) return error.BrokenPipe; |
| 142 | last_amt_zero = true; |
| 143 | } |
| 139 | 144 | } |
| 140 | 145 | } |
| 141 | 146 | |