diff --git a/src/plugins/slurmctld/dynalloc/msg.c b/src/plugins/slurmctld/dynalloc/msg.c
index b55cc65866715ee0065cda91299afb3cbd11478b..921ed9e52befc355765ccdc20790e408e86ddd85 100644
--- a/src/plugins/slurmctld/dynalloc/msg.c
+++ b/src/plugins/slurmctld/dynalloc/msg.c
@@ -86,6 +86,20 @@ static size_t	_write_bytes(int fd, char *buf, size_t size);
 extern int spawn_msg_thread(void)
 {
 	pthread_attr_t thread_attr_msg;
+	slurm_ctl_conf_t *conf;
+	/* Locks: Read configurationn */
+	slurmctld_lock_t config_read_lock = {
+		READ_LOCK, NO_LOCK, NO_LOCK, NO_LOCK };
+
+	lock_slurmctld(config_read_lock);
+	conf = slurm_conf_lock();
+	sched_port = conf->dynalloc_port;
+	slurm_conf_unlock();
+	unlock_slurmctld(config_read_lock);
+	if (sched_port == 0) {
+		error("DynAllocPort == 0, not spawning communication thread");
+		return SLURM_ERROR;
+	}
 
 	pthread_mutex_lock( &thread_flag_mutex );
 	if (thread_running) {
@@ -150,17 +164,7 @@ static void *_msg_thread(void *no_data)
 	slurm_fd_t sock_fd = -1, new_fd;
 	slurm_addr_t cli_addr;
 	char *msg;
-	slurm_ctl_conf_t *conf;
 	int i;
-	/* Locks: Read configurationn */
-	slurmctld_lock_t config_read_lock = {
-		READ_LOCK, NO_LOCK, NO_LOCK, NO_LOCK };
-
-	lock_slurmctld(config_read_lock);
-	conf = slurm_conf_lock();
-	sched_port = conf->dynalloc_port;
-	slurm_conf_unlock();
-	unlock_slurmctld(config_read_lock);
 
 	/* If JobSubmitDynAllocPort is already taken, keep trying to open it
 	 * once per minute. Slurmctld will continue to function