diff --git a/src/sbbs3/getnode.cpp b/src/sbbs3/getnode.cpp
index d6c57845c46efd56c55aaa8bd61e2539e0207b66..5760a915ee1ac687a9f9b1738a2fb64366fbf334 100644
--- a/src/sbbs3/getnode.cpp
+++ b/src/sbbs3/getnode.cpp
@@ -70,7 +70,8 @@ int sbbs_t::getnodedat(uint number, node_t *node, bool lockit)
 	for(count=0;count<LOOP_NODEDAB;count++) {
 		if(count)
 			mswait(100);
-		if(lock(nodefile,(long)number*sizeof(node_t),sizeof(node_t))!=0)
+		if(lock(nodefile,(long)number*sizeof(node_t),sizeof(node_t))!=0
+			&& lockit)
 			continue; 
 		lseek(nodefile,(long)number*sizeof(node_t),SEEK_SET);
 		rd=read(nodefile,node,sizeof(node_t));
diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 6889c43cb44135c3fca4f062d33badf1ca5954e4..c7203c33f30f5d5e155541ccbf223fe55a99f541 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -689,7 +689,8 @@ int DLLCALL getnodedat(scfg_t* cfg, uint number, node_t *node, int* fdp)
 			if(count)
 				mswait(100);
 			lseek(file,(long)number*sizeof(node_t),SEEK_SET);
-			if(lock(file,(long)number*sizeof(node_t),sizeof(node_t))!=0) 
+			if(lock(file,(long)number*sizeof(node_t),sizeof(node_t))!=0
+				&& fdp!=NULL) 
 				continue; 
 			rd=read(file,node,sizeof(node_t));
 			if(fdp==NULL || rd!=sizeof(node_t))