diff --git a/src/sbbs3/getnode.cpp b/src/sbbs3/getnode.cpp
index 1249685a6c068c6017fd04e8c33aec2cf5cf2f73..5e0d13c811346d2adc563bd8932d534a8b3a7350 100644
--- a/src/sbbs3/getnode.cpp
+++ b/src/sbbs3/getnode.cpp
@@ -43,12 +43,11 @@ bool sbbs_t::getnodedat(uint number, node_t *node, bool lockit)
 
 	if(node!=&thisnode)
 		memset(node,0,sizeof(node_t));
-	SAFEPRINTF(str,"%snode.dab",cfg.ctrl_dir);
 	pthread_mutex_lock(&nodefile_mutex);
 	if(nodefile==-1) {
-		if((nodefile=nopen(str,O_RDWR|O_DENYNONE))==-1) {
+		if((nodefile=opennodedat(&cfg))==-1) {
 			pthread_mutex_unlock(&nodefile_mutex);
-			errormsg(WHERE,ERR_OPEN,str,O_RDWR|O_DENYNONE);
+			errormsg(WHERE,ERR_OPEN,"nodefile",number);
 			return false;
 		}
 	}
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 9cac3aabff648e72d5a3152574b860810a5a477b..2b28fafdde288c36a07b5c02bb87ada738827d1f 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -3630,11 +3630,10 @@ bool sbbs_t::init()
 	}
 
 	/* Shared NODE files */
-	SAFEPRINTF2(str,"%s%s",cfg.ctrl_dir,"node.dab");
 	pthread_mutex_lock(&nodefile_mutex);
-	if((nodefile=nopen(str,O_DENYNONE|O_RDWR|O_CREAT))==-1) {
+	if((nodefile=opennodedat(&cfg))==-1) {
 		pthread_mutex_unlock(&nodefile_mutex);
-		errormsg(WHERE, ERR_OPEN, str, cfg.node_num);
+		errormsg(WHERE, ERR_OPEN, "nodefile", cfg.node_num);
 		return(false);
 	}
 	memset(&node,0,sizeof(node_t));  /* write NULL to node struct */
@@ -3643,13 +3642,13 @@ bool sbbs_t::init()
 		lseek(nodefile,0L,SEEK_END);
 		if(write(nodefile,&node,sizeof(node_t))!=sizeof(node_t)) {
 			pthread_mutex_unlock(&nodefile_mutex);
-			errormsg(WHERE,ERR_WRITE,str,sizeof(node_t));
+			errormsg(WHERE,ERR_WRITE,"nodefile",sizeof(node_t));
 			break;
 		}
 	}
 	if(chsize(nodefile, (off_t)(cfg.sys_nodes*sizeof(node_t))) != 0) {
 		pthread_mutex_unlock(&nodefile_mutex);
-		errormsg(WHERE, ERR_LEN, str, cfg.sys_nodes*sizeof(node_t));
+		errormsg(WHERE, ERR_LEN, "ndoefile", cfg.sys_nodes*sizeof(node_t));
 	}
 	for(i=0; cfg.node_num>0 && i<LOOP_NODEDAB; i++) {
 		if(lock(nodefile,(cfg.node_num-1)*sizeof(node_t),sizeof(node_t))==0) {
@@ -3665,7 +3664,7 @@ bool sbbs_t::init()
 	pthread_mutex_unlock(&nodefile_mutex);
 
 	if(i>=LOOP_NODEDAB) {
-		errormsg(WHERE, ERR_LOCK, str, cfg.node_num);
+		errormsg(WHERE, ERR_LOCK, "nodefile", cfg.node_num);
 		return(false);
 	}
 
diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 65c1a79e4a568906fa7b36905fe35f1914b33d72..ad3e15c70262f5364a89a77c95b8c196576d84ec 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -1099,7 +1099,7 @@ int opennodedat(scfg_t* cfg)
 		return -1;
 
 	SAFEPRINTF(fname, "%snode.dab", cfg->ctrl_dir);
-	return nopen(fname, O_RDWR|O_DENYNONE);
+	return nopen(fname, O_RDWR | O_CREAT | O_DENYNONE);
 }
 
 /****************************************************************************/