diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index dce2777144a5d8fdaad3716b3ff67746ace04bd4..bc2ef4702b90a6e1df55492b6feb26acd9d4ebae 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -680,9 +680,7 @@ fill_ctld_conf ( slurm_ctl_conf_t * conf_ptr )
 	conf_ptr->last_update = init_time ;
 	if ( !conf_ptr->backup_interval )    conf_ptr->backup_interval   	= BACKUP_INTERVAL ;
 	if ( !conf_ptr->backup_location )    conf_ptr->backup_location   	= BACKUP_LOCATION ;
-	if ( !conf_ptr->backup_machine )     conf_ptr->backup_machine    	= backup_controller ;
 	if ( !conf_ptr->control_daemon )     conf_ptr->control_daemon    	= CONTROL_DAEMON ;
-	if ( !conf_ptr->control_machine )    conf_ptr->control_machine   	= control_machine ;
 	if ( !conf_ptr->controller_timeout ) conf_ptr->controller_timeout	= CONTROLLER_TIMEOUT ;
 	if ( !conf_ptr->epilog )             conf_ptr->epilog           	= EPILOG ;
 	if ( !conf_ptr->fast_schedule )      conf_ptr->fast_schedule     	= FAST_SCHEDULE ;
diff --git a/src/slurmctld/read_config.c b/src/slurmctld/read_config.c
index fdfdbec88cb78f56c37ccaac6382b69910538fce..fe65b25fcf2eb989ac7731fb24cf278ca7b19550 100644
--- a/src/slurmctld/read_config.c
+++ b/src/slurmctld/read_config.c
@@ -28,10 +28,14 @@
 int parse_node_spec (char *in_line);
 int parse_part_spec (char *in_line);
 
-char *backup_controller = NULL;
-char *control_machine = NULL;
 int node_record_count = 0;
 
+#if DEBUG_MODULE
+slurm_ctl_conf_t slurmctld_conf;
+#else
+extern slurm_ctl_conf_t slurmctld_conf;
+#endif
+
 #if DEBUG_MODULE
 /* main is used here for module testing purposes only */
 #include <sys/resource.h>
@@ -67,8 +71,8 @@ main (int argc, char *argv[]) {
 		exit (error_code);
 	}			
 
-	printf ("ControlMachine=%s\n", control_machine);
-	printf ("BackupController=%s\n", backup_controller);
+	printf ("ControlMachine=%s\n", slurmctld_conf.control_machine);
+	printf ("BackupController=%s\n", bslurmctld_conf.backup_controller);
 	printf ("\n");
 
 	for (i = 0; i < node_record_count; i++) {
@@ -328,15 +332,6 @@ int
 init_slurm_conf () {
 	int error_code;
 
-	if (control_machine) {
-		xfree (control_machine);
-		control_machine = NULL;
-	}
-	if (backup_controller) {
-		xfree (backup_controller);
-		backup_controller = NULL;
-	}
-
 	if ((error_code = init_node_conf ()))
 		return error_code;
 
@@ -707,6 +702,9 @@ read_slurm_conf (char *file_name) {
 	/* process the data file */
 	line_num = 0;
 	while (fgets (in_line, BUF_SIZE, slurm_spec_file) != NULL) {
+		char* control_machine = NULL;
+		char* backup_machine = NULL;
+
 		line_num++;
 		if (strlen (in_line) >= (BUF_SIZE - 1)) {
 			error ("read_slurm_conf line %d, of input file %s too long\n",
@@ -737,13 +735,20 @@ read_slurm_conf (char *file_name) {
 		/* overall slurm configuration parameters */
 		error_code = slurm_parser(in_line,
 			"ControlMachine=", 's', &control_machine, 
-			"BackupController=", 's', &backup_controller, 
+			"BackupController=", 's', &backup_machine, 
 			"END");
 		if (error_code) {
 			fclose (slurm_spec_file);
 			return error_code;
 		}		
 
+		if ( slurmctld_conf.control_machine == NULL ) {
+			slurmctld_conf.control_machine = control_machine;
+		}
+		if ( slurmctld_conf.backup_machine == NULL ) {
+			slurmctld_conf.backup_machine = backup_machine;
+		}
+
 		/* node configuration parameters */
 		if ((error_code = parse_node_spec (in_line))) {
 			fclose (slurm_spec_file);
@@ -762,10 +767,10 @@ read_slurm_conf (char *file_name) {
 	fclose (slurm_spec_file);
 
 	/* if values not set in configuration file, set defaults */
-	if (backup_controller == NULL)
+	if (slurmctld_conf.backup_machine == NULL)
 		info ("read_slurm_conf: backup_controller value not specified.");		
 
-	if (control_machine == NULL) {
+	if (slurmctld_conf.control_machine == NULL) {
 		error ("read_slurm_conf: control_machine value not specified.");
 		return EINVAL;
 	}