diff --git a/src/slurmd/io.c b/src/slurmd/io.c
index 40638296c530ab595e1ca778570e6f704ac2f441..d2d8b97c49f802a9095cfb4c559b0c98baa6dbef 100644
--- a/src/slurmd/io.c
+++ b/src/slurmd/io.c
@@ -1194,12 +1194,19 @@ _write(io_obj_t *obj, List objs)
 	}
 
 	while ((n = cbuf_read_to_fd(io->buf, obj->fd, -1)) < 0) {
-		if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) 
-			return 0;
-		if ((errno == EPIPE) || (errno == EINVAL) || (errno == EBADF))
+		switch (errno) {
+		case EAGAIN:
+			return 0; 
+			break;
+		case EPIPE:
+		case EINVAL:
+		case EBADF:
+		case ECONNRESET: 
 			_obj_close(obj, objs); 
-		else
+			break;
+		default:
 			error("write failed: <task %d>: %m", io->id);
+		}
 		return -1;
 	}