summaryrefslogtreecommitdiff
path: root/src/ssh.c
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2023-08-04 13:31:10 +0900
committerRyo Nakamura <upa@haeena.net>2023-08-04 13:31:10 +0900
commit518aa42208969566aa26cf82a40d1ecb6358684a (patch)
tree676bd0795f25966719d1d242ed8c9a18e57597b8 /src/ssh.c
parent3b26c7c7191c44ddd8840a803b603cd2f60ac059 (diff)
add -F ssh_config option
Diffstat (limited to 'src/ssh.c')
-rw-r--r--src/ssh.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/ssh.c b/src/ssh.c
index e4d0d75..29f9623 100644
--- a/src/ssh.c
+++ b/src/ssh.c
@@ -73,6 +73,12 @@ static int ssh_set_opts(ssh_session ssh, struct mscp_ssh_opts *opts)
}
}
+ if (is_specified(opts->config) &&
+ ssh_options_parse_config(ssh, opts->config) < 0) {
+ mscp_set_error("failed to parse ssh_config: %s", opts->config);
+ return -1;
+ }
+
return 0;
}
@@ -149,14 +155,14 @@ static ssh_session ssh_init_session(const char *sshdst, struct mscp_ssh_opts *op
cb.userdata = opts;
ssh_set_callbacks(ssh, &cb);
- if (ssh_set_opts(ssh, opts) != 0)
- goto free_out;
-
if (ssh_options_set(ssh, SSH_OPTIONS_HOST, sshdst) != SSH_OK) {
mscp_set_error("failed to set destination host");
goto free_out;
}
+ if (ssh_set_opts(ssh, opts) != 0)
+ goto free_out;
+
if (ssh_connect(ssh) != SSH_OK) {
mscp_set_error("failed to connect ssh server: %s", ssh_get_error(ssh));
goto free_out;