diff --git a/src/common/slurm_protocol_socket_implementation.c b/src/common/slurm_protocol_socket_implementation.c
index 672e0406381f20db8d498476766867f29350d2e9..1a257fbda8d3a921233a86db9b7aa7184ea96c1d 100644
--- a/src/common/slurm_protocol_socket_implementation.c
+++ b/src/common/slurm_protocol_socket_implementation.c
@@ -593,10 +593,14 @@ extern int _slurm_connect (int __fd, struct sockaddr const * __addr,
 	ufds.events = POLLIN | POLLOUT;
 	ufds.revents = 0;
 
-	rc = poll(&ufds, 1, 5000);
+again:	rc = poll(&ufds, 1, 5000);
 	if (rc == -1) {
 		/* poll failed */
-		error("_slurm_connect poll failed: %m");
+		if (errno == EINTR) {
+			verbose("_slurm_connect poll failed: %m");
+			goto again;
+		} else
+			error("_slurm_connect poll failed: %m");
 		return -1;
 	} else if (rc == 0) {
 		/* poll timed out before any socket events */