diff --git a/src/sbbs3/putnode.cpp b/src/sbbs3/putnode.cpp
index 6ebebb432c15efdd55515ae59a59729c8db286d4..7dfcd88b33dc6e79189c3efd4456e82df3e382f5 100644
--- a/src/sbbs3/putnode.cpp
+++ b/src/sbbs3/putnode.cpp
@@ -66,8 +66,8 @@ bool sbbs_t::putnodedat(uint number, node_t* node)
 	pthread_mutex_lock(&nodefile_mutex);
 	if(nodefile==-1) {
 		if((nodefile=nopen(path,O_CREAT|O_RDWR|O_DENYNONE))==-1) {
-			errormsg(WHERE,ERR_OPEN,path,O_CREAT|O_RDWR|O_DENYNONE);
 			pthread_mutex_unlock(&nodefile_mutex);
+			errormsg(WHERE,ERR_OPEN,path,O_CREAT|O_RDWR|O_DENYNONE);
 			return false;
 		}
 	}
@@ -99,6 +99,7 @@ bool sbbs_t::putnodedat(uint number, node_t* node)
 bool sbbs_t::unlocknodedat(uint number)
 {
 	if(number < 1 || number > cfg.sys_nodes) {
+		pthread_mutex_unlock(&nodefile_mutex);
 		errormsg(WHERE, ERR_CHK, "node number", number);
 		return false;
 	}