From 2e821464484c08ac28ed31c98ed2004a09356206 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Wed, 20 Jan 2016 09:22:23 +0000 Subject: [PATCH] Use a new rename_or_move() function to move files from the temp dir to the inbound dir. --- exec/binkit.js | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/exec/binkit.js b/exec/binkit.js index 94bdf808fa..b9b98740d6 100644 --- a/exec/binkit.js +++ b/exec/binkit.js @@ -314,6 +314,44 @@ function handle_freq(reqfname, bp) } } +function rename_or_move(src, dst) +{ + var sf; + var df; + var buf; + var remain; + + if (file_rename(src, dst)) + return true; + sf = new File(src); + if (!sf.open("rb")) + return false; + df = new File(dst); + if (!df.open("web")) { + sf.close(); + return false; + } + while (!sf.eof) { + // Read 2MB at a time... + remain = sf.length - sf.position; + if (remain === 0) + break; + if (remain > 0x200000) + remain = 0x200000; + buf = sf.read(remain); + if (!df.write(buf)) { + df.close(); + df.remove(); + sf.close(); + return false; + } + } + df.close(); + sf.close(); + sf.remove(); + return true; +} + function rx_callback(fname, bp) { var semname; @@ -336,12 +374,12 @@ function rx_callback(fname, bp) else { if (bp.authenticated === 'secure') { log(LOG_INFO, "Moving '"+fname+"' to '"+bp.cb_data.binkit_scfg.secure_inbound+file_getname(fname)+"'."); - if (!file_rename(fname, bp.cb_data.binkit_scfg.secure_inbound+file_getname(fname))) + if (!rename_or_move(fname, bp.cb_data.binkit_scfg.secure_inbound+file_getname(fname))) return false; } else { log(LOG_INFO, "Moving '"+fname+"' to '"+bp.cb_data.binkit_scfg.inbound+file_getname(fname)+"'."); - if (!file_rename(fname, bp.cb_data.binkit_scfg.inbound+file_getname(fname))) + if (!rename_or_move(fname, bp.cb_data.binkit_scfg.inbound+file_getname(fname))) return false; } } -- GitLab