diff --git a/src/sbbs3/download.cpp b/src/sbbs3/download.cpp
index dfa77f8de96c3fab2c4b37d61fdc4aa889ec1295..8331461b58e66a74cb00de01cf726aeb9156b06f 100644
--- a/src/sbbs3/download.cpp
+++ b/src/sbbs3/download.cpp
@@ -453,7 +453,9 @@ bool sbbs_t::sendfile(file_t* f, char prot, bool autohang)
 	SAFEPRINTF2(str, "from %s %s"
 		,cfg.lib[cfg.dir[f->dir]->lib]->sname
 		,cfg.dir[f->dir]->sname);
+	current_file = f;
 	bool result = sendfile(getfilepath(&cfg, f, path), prot, str, autohang);
+	current_file = nullptr;
 	if(result == true) {
 		if(cfg.dir[f->dir]->misc&DIR_TFREE && cur_cps)
 			starttime += f->size / (ulong)cur_cps;
diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index 8d24463b5e1ccc3ded7b2e6756c83ce635ac7466..0e4ff07786bacd59de57957bfda866000bf9ee4a 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -1096,6 +1096,8 @@ const char* prot_menu_file[] = {
 
 char* sbbs_t::xfer_prot_menu(enum XFER_TYPE type, user_t* user, char* keys, size_t size)
 {
+	if(type == XFER_DOWNLOAD && current_file != nullptr)
+		menu("download", P_NOERROR);
 	size_t count = 0;
 	bool menu_used = menu(prot_menu_file[type], P_NOERROR);
 	if(user == nullptr)