diff --git a/src/slurmctld/agent.c b/src/slurmctld/agent.c
index 9b873260d0ea58369d40fc58d5cb0608db1a4858..e0e0f113854f8970316502fe0fd77b0642bdb4cb 100644
--- a/src/slurmctld/agent.c
+++ b/src/slurmctld/agent.c
@@ -120,8 +120,7 @@ agent (void *args)
 		goto cleanup;
 	if (agent_arg_ptr->slurm_addr == NULL)
 		error ("agent passed null address list");
-	if ((agent_arg_ptr->msg_type != REQUEST_REVOKE_JOB_CREDENTIAL) &&
-	    (agent_arg_ptr->msg_type != REQUEST_SHUTDOWN_IMMEDIATE))
+	if (agent_arg_ptr->msg_type != REQUEST_REVOKE_JOB_CREDENTIAL)
 		fatal ("agent passed invaid message type %d", agent_arg_ptr->msg_type);
 
 	/* initialize the data structures */
diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index 5c3b6293177e339b6da717eb88754a7e743e486a..1145d5a73f29bb0425983e12174984f7b4512b1e 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -99,7 +99,7 @@ inline static void slurm_rpc_job_step_get_info ( slurm_msg_t * msg ) ;
 inline static void slurm_rpc_job_will_run ( slurm_msg_t * msg ) ;
 inline static void slurm_rpc_node_registration ( slurm_msg_t * msg ) ;
 inline static void slurm_rpc_reconfigure_controller ( slurm_msg_t * msg ) ;
-inline static void slurm_rpc_shutdown_controller ( slurm_msg_t * msg );
+inline static void slurm_rpc_shutdown_controller ( slurm_msg_t * msg, int response );
 inline static void slurm_rpc_submit_batch_job ( slurm_msg_t * msg ) ;
 inline static void slurm_rpc_update_job ( slurm_msg_t * msg ) ;
 inline static void slurm_rpc_update_node ( slurm_msg_t * msg ) ;
@@ -514,8 +514,10 @@ slurmctld_req ( slurm_msg_t * msg )
 			slurm_rpc_reconfigure_controller ( msg ) ;
 			break;
 		case REQUEST_SHUTDOWN:
+			slurm_rpc_shutdown_controller ( msg , 1 ) ;
+			break;
 		case REQUEST_SHUTDOWN_IMMEDIATE:
-			slurm_rpc_shutdown_controller ( msg ) ;
+			slurm_rpc_shutdown_controller ( msg , 0 ) ;
 			break;
 		case REQUEST_UPDATE_JOB:
 			slurm_rpc_update_job ( msg ) ;
@@ -1175,7 +1177,7 @@ slurm_rpc_reconfigure_controller ( slurm_msg_t * msg )
 
 /* slurm_rpc_shutdown_controller - process RPC to shutdown slurmctld */
 void 
-slurm_rpc_shutdown_controller ( slurm_msg_t * msg )
+slurm_rpc_shutdown_controller ( slurm_msg_t * msg, int response )
 {
 	/* do RPC call */
 /* must be user root */
@@ -1186,8 +1188,9 @@ slurm_rpc_shutdown_controller ( slurm_msg_t * msg )
 		info ("slurm_rpc_shutdown_controller completed successfully");
 	}
 
-	/* return result */
-	slurm_send_rc_msg ( msg , SLURM_SUCCESS );
+	if (response) {
+		slurm_send_rc_msg ( msg , SLURM_SUCCESS );
+	}
 }
 
 
@@ -1282,12 +1285,9 @@ slurm_rpc_node_registration ( slurm_msg_t * msg )
 int
 slurm_shutdown ()
 {
-	int msg_size ;
 	int rc ;
 	slurm_fd sockfd ;
 	slurm_msg_t request_msg ;
-	slurm_msg_t response_msg ;
-	return_code_msg_t * slurm_rc_msg ;
 
         /* init message connection for message communication with controller */
 	if ( ( sockfd = slurm_open_controller_conn ( ) ) == SLURM_SOCKET_ERROR ) {
@@ -1303,36 +1303,13 @@ slurm_shutdown ()
 		return SLURM_SOCKET_ERROR ;
 	}
 
-	/* receive message */
-	if ( ( msg_size = slurm_receive_msg ( sockfd , & response_msg ) ) == SLURM_SOCKET_ERROR ) {
-		error ("slurm_receive_msg error");
-		return SLURM_SOCKET_ERROR ;
-	}
+	/* no response */
 
 	/* shutdown message connection */
 	if ( ( rc = slurm_shutdown_msg_conn ( sockfd ) ) == SLURM_SOCKET_ERROR ) {
 		error ("slurm_shutdown_msg_conn error");
 		return SLURM_SOCKET_ERROR ;
 	}
-	if ( msg_size )
-		return msg_size;
-
-	switch ( response_msg . msg_type )
-	{
-		case RESPONSE_SLURM_RC:
-			slurm_rc_msg = ( return_code_msg_t * ) response_msg . data ;
-			rc = slurm_rc_msg->return_code;
-			slurm_free_return_code_msg ( slurm_rc_msg );	
-			if (rc) {
-				error ("slurm_shutdown_msg_conn error (%d)", rc);
-				return SLURM_PROTOCOL_ERROR;
-			}
-			break ;
-		default:
-			error ("slurm_shutdown_msg_conn type bad (%d)", response_msg . msg_type);
-			return SLURM_UNEXPECTED_MSG_ERROR;
-			break ;
-	}
 
         return SLURM_PROTOCOL_SUCCESS ;
 }