diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c
index 354b0410e6ae47e481c1d9da0b913fb5f80a2e31..e602151e78ebe9a7c719aaa90b78d6b29edd59c6 100644
--- a/src/slurmctld/node_mgr.c
+++ b/src/slurmctld/node_mgr.c
@@ -1228,6 +1228,12 @@ void node_did_resp (char *name)
 	}
 	if (node_ptr->node_state == NODE_STATE_UNKNOWN)
 		node_ptr->node_state = NODE_STATE_IDLE;
+	if ((node_ptr->node_state == NODE_STATE_DOWN) &&
+	    (slurmctld_conf.ret2service == 1)) {
+		node_ptr->node_state = NODE_STATE_IDLE;
+		info("node_did_resp: node %s returned to service", name);
+		xfree(node_ptr->reason);
+	}
 	if (node_ptr->node_state == NODE_STATE_IDLE)
 		bit_set (idle_node_bitmap, node_inx);
 	if ((node_ptr->node_state == NODE_STATE_DOWN)     ||