Skip to content
Snippets Groups Projects
Commit 448e1815 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Add free disk space check against minimum space configured

Disallow uploads when free disk space falls below minimum configured
minimum free disk space.

This fixes issue #535
parent 5ba5d97a
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
...@@ -4531,6 +4531,7 @@ static void ctrl_thread(void* arg) ...@@ -4531,6 +4531,7 @@ static void ctrl_thread(void* arg)
dir=i; dir=i;
p=tp+1; p=tp+1;
} }
uint64_t freespace;
if(dir<0) { if(dir<0) {
sprintf(str,"%s.rep",scfg.sys_id); sprintf(str,"%s.rep",scfg.sys_id);
if(!(startup->options&FTP_OPT_ALLOW_QWK) if(!(startup->options&FTP_OPT_ALLOW_QWK)
...@@ -4544,6 +4545,7 @@ static void ctrl_thread(void* arg) ...@@ -4544,6 +4545,7 @@ static void ctrl_thread(void* arg)
lprintf(LOG_INFO,"%04d <%s> uploading: %s in %s mode" lprintf(LOG_INFO,"%04d <%s> uploading: %s in %s mode"
,sock,user.alias,fname ,sock,user.alias,fname
,mode); ,mode);
freespace = getfreediskspace(scfg.data_dir, 1);
} else { } else {
append=(strnicmp(cmd,"APPE",4)==0); append=(strnicmp(cmd,"APPE",4)==0);
...@@ -4620,6 +4622,13 @@ static void ctrl_thread(void* arg) ...@@ -4620,6 +4622,13 @@ static void ctrl_thread(void* arg)
,genvpath(lib,dir,str) /* virtual path */ ,genvpath(lib,dir,str) /* virtual path */
,scfg.dir[dir]->path /* actual path */ ,scfg.dir[dir]->path /* actual path */
,mode); ,mode);
freespace = getfreediskspace(scfg.dir[dir]->path, 1);
}
if(freespace < scfg.min_dspace) {
lprintf(LOG_ERR, "%04d <%s> !insufficient disk free space (%" PRIu64 " bytes) to allow upload"
,sock, user.alias, freespace);
sockprintf(sock, sess, "452 insufficient free disk space, try again later");
continue;
} }
sockprintf(sock,sess,"150 Opening BINARY mode data connection for file transfer."); sockprintf(sock,sess,"150 Opening BINARY mode data connection for file transfer.");
filexfer(&data_addr,sock,sess,pasv_sock,pasv_sess,&data_sock,&data_sess,fname,filepos filexfer(&data_addr,sock,sess,pasv_sock,pasv_sess,&data_sock,&data_sess,fname,filepos
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment