diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 00e03cb7fac7a70ad91e4236c17cdf18470d7486..732c37f8acf5c8e4e790941ebf066e946edc64d0 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -649,7 +649,7 @@ int DLLCALL getnodedat(scfg_t* cfg, uint number, node_t *node, int* fp)
 		return(-1);
 
 	sprintf(str,"%snode.dab",cfg->ctrl_dir);
-	if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1) {
+	if((file=nopen(str,O_RDWR|O_DENYNONE))==-1) {
 		memset(node,0,sizeof(node_t));
 		if(fp!=NULL)
 			*fp=file;
@@ -696,7 +696,6 @@ int DLLCALL putnodedat(scfg_t* cfg, uint number, node_t* node, int file)
 	number--;	/* make zero based */
 	for(attempts=0;attempts<10;attempts++) {
 		lseek(file,(long)number*sizeof(node_t),SEEK_SET);
-		lock(file,(long)number*sizeof(node_t),sizeof(node_t));
 		if((wr=write(file,node,sizeof(node_t)))==sizeof(node_t))
 			break;
 		wrerr=errno;	/* save write error */