diff --git a/src/srun/io.c b/src/srun/io.c
index e8b7e7a004d5b871586760d509552fb1a71133c8..c702b61e6d3bd1e0d72424855706f4e3464b1f07 100644
--- a/src/srun/io.c
+++ b/src/srun/io.c
@@ -253,8 +253,8 @@ _server_read(eio_obj_t *obj, List objs)
 		}
 
 		n = io_hdr_read_fd(obj->fd, &s->header);
-		if (n == 0) { /* got eof on socket read */
-			debug3(  "got eof on _server_read header");
+		if (n <= 0) { /* got eof or error on socket read */
+			debug3(  "got eof or error on _server_read header");
 			s->in_eof = true;
 			list_enqueue(s->job->free_outgoing, s->in_msg);
 			s->in_msg = NULL;