diff --git a/src/slurmd/slurmstepd/slurmstepd.c b/src/slurmd/slurmstepd/slurmstepd.c
index 5e96d6cdb92ab1bf69860ce8a88f25b80c6aa873..95ef5cde49b61c49f1b1c71429524ef6dd6fae34 100644
--- a/src/slurmd/slurmstepd/slurmstepd.c
+++ b/src/slurmd/slurmstepd/slurmstepd.c
@@ -31,8 +31,10 @@
 
 #include <unistd.h>
 #include <stdlib.h>
+#include <signal.h>
 
 #include "src/common/xmalloc.h"
+#include "src/common/xsignal.h"
 
 #include "src/slurmd/slurmd/slurmd.h"
 #include "src/slurmd/common/slurmstepd_init.h"
@@ -49,6 +51,10 @@ static slurmd_job_t *_step_setup(slurm_addr *cli, slurm_addr *self,
 static void _step_cleanup(slurmd_job_t *job, slurm_msg_t *msg, int rc);
 
 
+static int block_signals[] = {
+	SIGPIPE, SIGHUP, 0
+};
+
 int 
 main (int argc, char *argv[])
 {
@@ -58,6 +64,7 @@ main (int argc, char *argv[])
 	slurmd_job_t *job;
 	int rc;
 
+	xsignal_block(block_signals);
 	conf = xmalloc(sizeof(*conf));
 	conf->argv = &argv;
 	conf->argc = &argc;