proftpd put: Acesso falhou: 552 791230988: Não há espaço no dispositivo (test.bin)

1

Quando eu envio um arquivo, digamos 755M, o relatório do proftpd "Não há espaço disponível no dispositivo"

lftp localhost: / > coloque test.bin put: Acesso falhou: 552 791230988: Não há espaço disponível no dispositivo (test.bin)

mas eu corro / bin / df -h, eu posso ver que ainda existem 414G disponíveis. meu diretório raiz do ftp está em / home / ftproot

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda4      ext4      1.8T  1.3T  414G  75% /home

Então, acho que há alguns erros no código-fonte do proftpd.

depois de revisar o código, encontre a causa raiz.

proftpd-dfsg-1.3.5 ~ rc3 / modules / mod_xfer.c +2381

 2380     } else {
 2381         if (requested_sz > avail_sz) {
 2382         pr_log_debug(DEBUG5, "%s requested %" PR_LU " bytes, only %" PR_LU
 2383           " bytes available on '%s'", cmd->argv[0], (pr_off_t) requested_sz,
 2384           (pr_off_t) avail_sz, path);
 2385         pr_response_add_err(R_552, "%s: %s", cmd->arg, strerror(ENOSPC));
 2386         return PR_ERROR(cmd);
 2387       }
 2388     }
 2389   }

na linha 2381, a unidade requesed_sz (791,230,988) está em bytes, mas a unidade avail_sz (435,293,500) está em kb

veja: proftpd-dfsg-1.3.5 ~ rc3 / src / fsio.c +4263

 4259     /* In order to return a size in KB, as get_fs_size() does, we need
 4260      * to divide by 1024.
 4261      */
 4262     *fs_size = (((off_t) fs.f_bavail * (off_t) fs.f_frsize) / 1024);

para corrigir esse bug:

if (requested_sz > avail_sz) {

tem que ser modificado como

if (requested_sz > avail_sz * 1024) {

mas eu não sei como reportar bug para o proftpd devel team, quem pode cometer o proftpd?

    
por Galen Liu 25.04.2014 / 10:28

0 respostas