fix mscp_opendir, do not use tls_sftp, use sftp isntead.

The fixed issue causes mscp_opendir wrongly calls opendir() for
local when tls_sftp is NULL although sftp is not NULL.
This commit is contained in:
Ryo Nakamura
2023-08-30 19:09:29 +09:00
parent 6b45cf7c9c
commit 13ec652195
2 changed files with 25 additions and 6 deletions

View File

@@ -72,8 +72,8 @@ MDIR *mscp_opendir(const char *path, sftp_session sftp)
return NULL;
memset(md, 0, sizeof(*md));
if (tls_sftp) {
md->remote = sftp_opendir(tls_sftp, path);
if (sftp) {
md->remote = sftp_opendir(sftp, path);
sftp_err_to_errno(sftp);
if (!md->remote) {
goto free_out;
@@ -146,8 +146,6 @@ int mscp_mkdir(const char *path, mode_t mode, sftp_session sftp)
if (sftp) {
ret = sftp_mkdir(sftp, path, mode);
fprintf(stderr, "after sftp_mkdir(%s), sftp_get_error is %d\n",
path, sftp_get_error(sftp));
sftp_err_to_errno(sftp);
} else
ret = mkdir(path, mode);

View File

@@ -11,11 +11,15 @@ from util import File, check_same_md5sum
def run2ok(args):
check_call(list(map(str, args)))
cmd = list(map(str, args))
print("cmd: {}".format(" ".join(cmd)))
check_call(cmd)
def run2ng(args):
cmd = list(map(str, args))
print("cmd: {}".format(" ".join(cmd)))
with pytest.raises(CalledProcessError) as e:
check_call(list(map(str, args)))
check_call(cmd)
""" usage test """
@@ -127,6 +131,23 @@ def test_dir_copy(mscp, src_prefix, dst_prefix, src_dir, dst_dir, src, dst, twic
df.cleanup()
tf.cleanup()
param_dir_copy_single = [
("src_dir", "dst_dir",
File("src_dir/t1", size = 1024 * 1024),
File("dst_dir/src_dir/t1"),
)
]
@pytest.mark.parametrize("src_prefix, dst_prefix", param_remote_prefix)
@pytest.mark.parametrize("src_dir, dst_dir, src, dst", param_dir_copy_single)
def test_dir_copy_single(mscp, src_prefix, dst_prefix, src_dir, dst_dir, src, dst):
src.make()
os.mkdir(dst_dir)
run2ok(["mscp", "-H", "-vvv", src_prefix + src_dir, dst_prefix + dst_dir])
assert check_same_md5sum(src, dst)
src.cleanup()
dst.cleanup()
@pytest.mark.parametrize("src_prefix, dst_prefix", param_remote_prefix)
def test_override_single_file(mscp, src_prefix, dst_prefix):
src = File("src", size = 128).make()