diff --git a/src/sbbs3/js_filebase.c b/src/sbbs3/js_filebase.c
index bf0a2a35c5fa0e295ecb636beb564beb2b214e1a..b7ecd5e2786bf93cb7e13d60af40176e62d3f73e 100644
--- a/src/sbbs3/js_filebase.c
+++ b/src/sbbs3/js_filebase.c
@@ -1258,6 +1258,7 @@ js_update_file(JSContext *cx, uintN argc, jsval *arglist)
 	char*		filename = NULL;
 	JSObject*	fileobj = NULL;
 	bool		use_diz_always = false;
+	bool		readd_always = false;
 	jsrefcount	rc;
 
 	ZERO_VAR(file);
@@ -1291,6 +1292,10 @@ js_update_file(JSContext *cx, uintN argc, jsval *arglist)
 		use_diz_always = JSVAL_TO_BOOLEAN(argv[argn]);
 		argn++;
 	}
+	if(argn < argc && JSVAL_IS_BOOLEAN(argv[argn])) {
+		readd_always = JSVAL_TO_BOOLEAN(argv[argn]);
+		argn++;
+	}
 
 	JSBool result = JS_TRUE;
 	char* extdesc = NULL;
@@ -1317,7 +1322,7 @@ js_update_file(JSContext *cx, uintN argc, jsval *arglist)
 			} else {
 				if(file.extdesc != NULL)
 					truncsp(file.extdesc);
-				if(strcmp(extdesc ? extdesc : "", file.extdesc ? file.extdesc : "") == 0)
+				if(!readd_always && strcmp(extdesc ? extdesc : "", file.extdesc ? file.extdesc : "") == 0)
 					p->smb_result = smb_putfile(&p->smb, &file);
 				else {
 					if((p->smb_result = smb_removefile(&p->smb, &file)) == SMB_SUCCESS) {
@@ -1721,7 +1726,7 @@ static jsSyncMethodSpec js_filebase_functions[] = {
 		,31900
 	},
 	{"update",			js_update_file,		3, JSTYPE_BOOLEAN
-		,JSDOCSTR("filename, file-meta-object [,use_diz_always=false]")
+		,JSDOCSTR("filename, file-meta-object [,use_diz_always=false] [,readd_always=false]")
 		,JSDOCSTR("update an existing file in the file base"
 				", may throw exception on errors (e.g. file rename failure)")
 		,31900