summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2022-10-23 15:51:21 +0900
committerRyo Nakamura <upa@haeena.net>2022-10-23 15:51:21 +0900
commitd11ac58f4b95b2f0fe3579b6fd430b2c29465af2 (patch)
treebddf2e8f3e57018e90e41cb0f2966989d9e16ecd /src/main.c
parent99b2bca7e537f2954d2f99ebeb4d5f93a7bcb91f (diff)
compilable in linux
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index 717e6bb..a8d7114 100644
--- a/src/main.c
+++ b/src/main.c
@@ -307,6 +307,10 @@ int main(int argc, char **argv)
struct sscp_thread *t = &threads[n];
t->sscp = &sscp;
t->finished = false;
+ t->sftp = ssh_make_sftp_session(sscp.host, sscp.opts);
+ if (!t->sftp)
+ goto join_out;
+
ret = pthread_create(&t->tid, NULL, sscp_copy_thread, t);
if (ret < 0) {
pr_err("pthread_create error: %d\n", ret);
@@ -352,14 +356,9 @@ void *sscp_copy_thread(void *arg)
{
struct sscp_thread *t = arg;
struct sscp *sscp = t->sscp;
- sftp_session sftp;
+ sftp_session sftp = t->sftp;
struct chunk *c;
- /* create sftp session */
- sftp = ssh_make_sftp_session(sscp->host, sscp->opts);
- if (!sftp)
- return NULL;
-
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);
pthread_cleanup_push(sscp_copy_thread_cleanup, t);