• Home
  • Raw
  • Download

Lines Matching refs:sshc

314   struct ssh_conn *sshc = &conn->proto.sshc;  in state()  local
383 if(sshc->state != nowstate) { in state()
385 (void *)sshc, names[sshc->state], names[nowstate]); in state()
389 sshc->state = nowstate; in state()
484 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_knownhost() local
486 const char *remotekey = libssh2_session_hostkey(sshc->ssh_session, in ssh_knownhost()
541 keycheck = libssh2_knownhost_checkp(sshc->kh, in ssh_knownhost()
551 keycheck = libssh2_knownhost_check(sshc->kh, in ssh_knownhost()
603 result = sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION; in ssh_knownhost()
608 libssh2_knownhost_del(sshc->kh, host); in ssh_knownhost()
616 int addrc = libssh2_knownhost_add(sshc->kh, in ssh_knownhost()
630 libssh2_knownhost_writefile(sshc->kh, in ssh_knownhost()
651 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_check_fingerprint() local
669 fingerprint = libssh2_hostkey_hash(sshc->ssh_session, in ssh_check_fingerprint()
676 hostkey = libssh2_session_hostkey(sshc->ssh_session, &len, NULL); in ssh_check_fingerprint()
688 sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION; in ssh_check_fingerprint()
689 return sshc->actualcode; in ssh_check_fingerprint()
697 sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION; in ssh_check_fingerprint()
698 return sshc->actualcode; in ssh_check_fingerprint()
704 sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION; in ssh_check_fingerprint()
705 return sshc->actualcode; in ssh_check_fingerprint()
731 sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION; in ssh_check_fingerprint()
732 return sshc->actualcode; in ssh_check_fingerprint()
744 fingerprint = libssh2_hostkey_hash(sshc->ssh_session, in ssh_check_fingerprint()
771 sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION; in ssh_check_fingerprint()
772 return sshc->actualcode; in ssh_check_fingerprint()
783 const char *remotekey = libssh2_session_hostkey(sshc->ssh_session, in ssh_check_fingerprint()
793 sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION; in ssh_check_fingerprint()
794 return sshc->actualcode; in ssh_check_fingerprint()
799 sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION; in ssh_check_fingerprint()
800 return sshc->actualcode; in ssh_check_fingerprint()
849 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_force_knownhost_key_type() local
856 if(sshc->kh && !data->set.str[STRING_SSH_HOST_PUBLIC_KEY_MD5]) { in ssh_force_knownhost_key_type()
858 while(!libssh2_knownhost_get(sshc->kh, &store, store)) { in ssh_force_knownhost_key_type()
943 rc = libssh2_session_method_pref(sshc->ssh_session, in ssh_force_knownhost_key_type()
948 libssh2_session_last_error(sshc->ssh_session, &errmsg, &errlen, 0); in ssh_force_knownhost_key_type()
965 struct ssh_conn *sshc, in sftp_quote() argument
977 char *cmd = sshc->quote_item->data; in sftp_quote()
978 sshc->acceptfail = FALSE; in sftp_quote()
987 sshc->acceptfail = TRUE; in sftp_quote()
1022 result = Curl_get_pathname(&cp, &sshc->quote_path1, sshc->homedir); in sftp_quote()
1043 result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); in sftp_quote()
1047 Curl_safefree(sshc->quote_path1); in sftp_quote()
1059 result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); in sftp_quote()
1063 Curl_safefree(sshc->quote_path1); in sftp_quote()
1078 result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); in sftp_quote()
1082 Curl_safefree(sshc->quote_path1); in sftp_quote()
1105 Curl_safefree(sshc->quote_path1); in sftp_quote()
1106 Curl_safefree(sshc->quote_path2); in sftp_quote()
1112 struct ssh_conn *sshc, in sftp_upload_init() argument
1128 int rc = libssh2_sftp_stat_ex(sshc->sftp_session, sshp->path, in sftp_upload_init()
1159 sshc->sftp_handle = in sftp_upload_init()
1160 libssh2_sftp_open_ex(sshc->sftp_session, sshp->path, in sftp_upload_init()
1165 if(!sshc->sftp_handle) { in sftp_upload_init()
1167 int rc = libssh2_session_last_errno(sshc->ssh_session); in sftp_upload_init()
1177 sftperr = libssh2_sftp_last_error(sshc->sftp_session); in sftp_upload_init()
1181 if(sshc->secondCreateDirs) { in sftp_upload_init()
1183 sshc->actualcode = sftperr != LIBSSH2_FX_OK ? in sftp_upload_init()
1195 sshc->secondCreateDirs = 1; in sftp_upload_init()
1200 sshc->actualcode = sftperr != LIBSSH2_FX_OK ? in sftp_upload_init()
1202 if(!sshc->actualcode) { in sftp_upload_init()
1206 sshc->actualcode = CURLE_SSH; in sftp_upload_init()
1213 return sshc->actualcode; in sftp_upload_init()
1267 SFTP_SEEK(sshc->sftp_handle, data->state.resume_from); in sftp_upload_init()
1281 sshc->orig_waitfor = data->req.keepon; in sftp_upload_init()
1299 struct ssh_conn *sshc) in sftp_pkey_init() argument
1305 sshc->authed = FALSE; in sftp_pkey_init()
1308 (strstr(sshc->authlist, "publickey") != NULL)) { in sftp_pkey_init()
1311 sshc->rsa_pub = sshc->rsa = NULL; in sftp_pkey_init()
1314 sshc->rsa = strdup(data->set.str[STRING_SSH_PRIVATE_KEY]); in sftp_pkey_init()
1324 sshc->rsa = aprintf("%s/.ssh/id_rsa", home); in sftp_pkey_init()
1325 if(!sshc->rsa) in sftp_pkey_init()
1327 else if(stat(sshc->rsa, &sbuf)) { in sftp_pkey_init()
1328 Curl_safefree(sshc->rsa); in sftp_pkey_init()
1329 sshc->rsa = aprintf("%s/.ssh/id_dsa", home); in sftp_pkey_init()
1330 if(!sshc->rsa) in sftp_pkey_init()
1332 else if(stat(sshc->rsa, &sbuf)) { in sftp_pkey_init()
1333 Curl_safefree(sshc->rsa); in sftp_pkey_init()
1338 if(!out_of_memory && !sshc->rsa) { in sftp_pkey_init()
1340 sshc->rsa = strdup("id_rsa"); in sftp_pkey_init()
1341 if(sshc->rsa && stat(sshc->rsa, &sbuf)) { in sftp_pkey_init()
1342 Curl_safefree(sshc->rsa); in sftp_pkey_init()
1343 sshc->rsa = strdup("id_dsa"); in sftp_pkey_init()
1344 if(sshc->rsa && stat(sshc->rsa, &sbuf)) { in sftp_pkey_init()
1345 Curl_safefree(sshc->rsa); in sftp_pkey_init()
1348 sshc->rsa = strdup(""); in sftp_pkey_init()
1362 sshc->rsa_pub = strdup(data->set.str[STRING_SSH_PUBLIC_KEY]); in sftp_pkey_init()
1363 if(!sshc->rsa_pub) in sftp_pkey_init()
1367 if(out_of_memory || !sshc->rsa) { in sftp_pkey_init()
1368 Curl_safefree(sshc->rsa); in sftp_pkey_init()
1369 Curl_safefree(sshc->rsa_pub); in sftp_pkey_init()
1371 sshc->actualcode = CURLE_OUT_OF_MEMORY; in sftp_pkey_init()
1375 sshc->passphrase = data->set.ssl.key_passwd; in sftp_pkey_init()
1376 if(!sshc->passphrase) in sftp_pkey_init()
1377 sshc->passphrase = ""; in sftp_pkey_init()
1379 if(sshc->rsa_pub) in sftp_pkey_init()
1380 infof(data, "Using SSH public key file '%s'", sshc->rsa_pub); in sftp_pkey_init()
1381 infof(data, "Using SSH private key file '%s'", sshc->rsa); in sftp_pkey_init()
1393 struct ssh_conn *sshc, in sftp_quote_stat() argument
1397 char *cmd = sshc->quote_item->data; in sftp_quote_stat()
1398 sshc->acceptfail = FALSE; in sftp_quote_stat()
1407 sshc->acceptfail = TRUE; in sftp_quote_stat()
1415 int rc = libssh2_sftp_stat_ex(sshc->sftp_session, sshc->quote_path2, in sftp_quote_stat()
1416 curlx_uztoui(strlen(sshc->quote_path2)), in sftp_quote_stat()
1423 if(rc && !sshc->acceptfail) { /* get those attributes */ in sftp_quote_stat()
1424 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in sftp_quote_stat()
1433 sshp->quote_attrs.gid = strtoul(sshc->quote_path1, NULL, 10); in sftp_quote_stat()
1435 if(sshp->quote_attrs.gid == 0 && !ISDIGIT(sshc->quote_path1[0]) && in sftp_quote_stat()
1436 !sshc->acceptfail) { in sftp_quote_stat()
1442 sshp->quote_attrs.permissions = strtoul(sshc->quote_path1, NULL, 8); in sftp_quote_stat()
1446 !ISDIGIT(sshc->quote_path1[0])) { in sftp_quote_stat()
1452 sshp->quote_attrs.uid = strtoul(sshc->quote_path1, NULL, 10); in sftp_quote_stat()
1454 if(sshp->quote_attrs.uid == 0 && !ISDIGIT(sshc->quote_path1[0]) && in sftp_quote_stat()
1455 !sshc->acceptfail) { in sftp_quote_stat()
1462 time_t date = Curl_getdate_capped(sshc->quote_path1); in sftp_quote_stat()
1490 Curl_safefree(sshc->quote_path1); in sftp_quote_stat()
1491 Curl_safefree(sshc->quote_path2); in sftp_quote_stat()
1497 struct ssh_conn *sshc, in sftp_download_stat() argument
1502 int rc = libssh2_sftp_stat_ex(sshc->sftp_session, sshp->path, in sftp_download_stat()
1568 SFTP_SEEK(sshc->sftp_handle, from); in sftp_download_stat()
1601 SFTP_SEEK(sshc->sftp_handle, data->state.resume_from); in sftp_download_stat()
1627 struct ssh_conn *sshc, in sftp_readdir() argument
1632 int rc = libssh2_sftp_readdir_ex(sshc->sftp_handle, in sftp_readdir()
1677 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in sftp_readdir()
1679 sshc->actualcode = result ? result : CURLE_SSH; in sftp_readdir()
1682 libssh2_session_last_errno(sshc->ssh_session)); in sftp_readdir()
1699 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_statemachine() local
1705 switch(sshc->state) { in ssh_statemachine()
1707 sshc->secondCreateDirs = 0; in ssh_statemachine()
1708 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
1709 sshc->actualcode = CURLE_OK; in ssh_statemachine()
1713 libssh2_session_set_blocking(sshc->ssh_session, 0); in ssh_statemachine()
1718 sshc->actualcode = result; in ssh_statemachine()
1726 rc = session_startup(sshc->ssh_session, conn->sock[FIRSTSOCKET]); in ssh_statemachine()
1732 (void)libssh2_session_last_error(sshc->ssh_session, &err_msg, NULL, 0); in ssh_statemachine()
1736 sshc->actualcode = CURLE_FAILED_INIT; in ssh_statemachine()
1766 sshc->authlist = libssh2_userauth_list(sshc->ssh_session, in ssh_statemachine()
1770 if(!sshc->authlist) { in ssh_statemachine()
1771 if(libssh2_userauth_authenticated(sshc->ssh_session)) { in ssh_statemachine()
1772 sshc->authed = TRUE; in ssh_statemachine()
1777 rc = libssh2_session_last_errno(sshc->ssh_session); in ssh_statemachine()
1782 sshc->actualcode = libssh2_session_error_to_CURLE(rc); in ssh_statemachine()
1787 sshc->authlist); in ssh_statemachine()
1793 result = sftp_pkey_init(data, sshc); in ssh_statemachine()
1799 rc = libssh2_userauth_publickey_fromfile_ex(sshc->ssh_session, in ssh_statemachine()
1803 sshc->rsa_pub, in ssh_statemachine()
1804 sshc->rsa, sshc->passphrase); in ssh_statemachine()
1809 Curl_safefree(sshc->rsa_pub); in ssh_statemachine()
1810 Curl_safefree(sshc->rsa); in ssh_statemachine()
1813 sshc->authed = TRUE; in ssh_statemachine()
1826 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
1837 (strstr(sshc->authlist, "password") != NULL)) { in ssh_statemachine()
1847 rc = libssh2_userauth_password_ex(sshc->ssh_session, conn->user, in ssh_statemachine()
1856 sshc->authed = TRUE; in ssh_statemachine()
1868 (strstr(sshc->authlist, "hostbased") != NULL)) { in ssh_statemachine()
1883 && (strstr(sshc->authlist, "publickey") != NULL)) { in ssh_statemachine()
1888 if(!sshc->ssh_agent) { in ssh_statemachine()
1889 sshc->ssh_agent = libssh2_agent_init(sshc->ssh_session); in ssh_statemachine()
1890 if(!sshc->ssh_agent) { in ssh_statemachine()
1898 rc = libssh2_agent_connect(sshc->ssh_agent); in ssh_statemachine()
1917 rc = libssh2_agent_list_identities(sshc->ssh_agent); in ssh_statemachine()
1928 sshc->sshagent_prev_identity = NULL; in ssh_statemachine()
1938 rc = libssh2_agent_get_identity(sshc->ssh_agent, in ssh_statemachine()
1939 &sshc->sshagent_identity, in ssh_statemachine()
1940 sshc->sshagent_prev_identity); in ssh_statemachine()
1945 rc = libssh2_agent_userauth(sshc->ssh_agent, conn->user, in ssh_statemachine()
1946 sshc->sshagent_identity); in ssh_statemachine()
1951 sshc->sshagent_prev_identity = sshc->sshagent_identity; in ssh_statemachine()
1963 sshc->authed = TRUE; in ssh_statemachine()
1976 && (strstr(sshc->authlist, "keyboard-interactive") != NULL)) { in ssh_statemachine()
1986 rc = libssh2_userauth_keyboard_interactive_ex(sshc->ssh_session, in ssh_statemachine()
1995 sshc->authed = TRUE; in ssh_statemachine()
2002 if(!sshc->authed) { in ssh_statemachine()
2005 sshc->actualcode = CURLE_LOGIN_DENIED; in ssh_statemachine()
2031 sshc->sftp_session = libssh2_sftp_init(sshc->ssh_session); in ssh_statemachine()
2032 if(!sshc->sftp_session) { in ssh_statemachine()
2034 if(libssh2_session_last_errno(sshc->ssh_session) == in ssh_statemachine()
2040 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2044 sshc->actualcode = CURLE_FAILED_INIT; in ssh_statemachine()
2054 rc = sftp_libssh2_realpath(sshc->sftp_session, ".", in ssh_statemachine()
2062 sshc->homedir = strdup(sshp->readdir_filename); in ssh_statemachine()
2063 if(!sshc->homedir) { in ssh_statemachine()
2065 sshc->actualcode = CURLE_OUT_OF_MEMORY; in ssh_statemachine()
2068 data->state.most_recent_ftp_entrypath = sshc->homedir; in ssh_statemachine()
2072 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2079 sshc->actualcode = result; in ssh_statemachine()
2096 result = Curl_getworkingpath(data, sshc->homedir, &sshp->path); in ssh_statemachine()
2098 sshc->actualcode = result; in ssh_statemachine()
2105 sshc->quote_item = data->set.quote; in ssh_statemachine()
2116 sshc->quote_item = data->set.postquote; in ssh_statemachine()
2126 result = sftp_quote(data, sshc, sshp); in ssh_statemachine()
2129 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2130 sshc->actualcode = result; in ssh_statemachine()
2135 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2136 Curl_safefree(sshc->quote_path2); in ssh_statemachine()
2138 sshc->quote_item = sshc->quote_item->next; in ssh_statemachine()
2140 if(sshc->quote_item) { in ssh_statemachine()
2144 if(sshc->nextstate != SSH_NO_STATE) { in ssh_statemachine()
2145 state(data, sshc->nextstate); in ssh_statemachine()
2146 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2155 result = sftp_quote_stat(data, sshc, sshp, block); in ssh_statemachine()
2158 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2159 sshc->actualcode = result; in ssh_statemachine()
2164 rc = libssh2_sftp_stat_ex(sshc->sftp_session, sshc->quote_path2, in ssh_statemachine()
2165 curlx_uztoui(strlen(sshc->quote_path2)), in ssh_statemachine()
2171 if(rc && !sshc->acceptfail) { in ssh_statemachine()
2172 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2173 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2174 Curl_safefree(sshc->quote_path2); in ssh_statemachine()
2178 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2179 sshc->actualcode = CURLE_QUOTE_ERROR; in ssh_statemachine()
2186 rc = libssh2_sftp_symlink_ex(sshc->sftp_session, sshc->quote_path1, in ssh_statemachine()
2187 curlx_uztoui(strlen(sshc->quote_path1)), in ssh_statemachine()
2188 sshc->quote_path2, in ssh_statemachine()
2189 curlx_uztoui(strlen(sshc->quote_path2)), in ssh_statemachine()
2194 if(rc && !sshc->acceptfail) { in ssh_statemachine()
2195 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2196 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2197 Curl_safefree(sshc->quote_path2); in ssh_statemachine()
2201 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2202 sshc->actualcode = CURLE_QUOTE_ERROR; in ssh_statemachine()
2209 rc = libssh2_sftp_mkdir_ex(sshc->sftp_session, sshc->quote_path1, in ssh_statemachine()
2210 curlx_uztoui(strlen(sshc->quote_path1)), in ssh_statemachine()
2215 if(rc && !sshc->acceptfail) { in ssh_statemachine()
2216 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2217 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2221 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2222 sshc->actualcode = CURLE_QUOTE_ERROR; in ssh_statemachine()
2229 rc = libssh2_sftp_rename_ex(sshc->sftp_session, sshc->quote_path1, in ssh_statemachine()
2230 curlx_uztoui(strlen(sshc->quote_path1)), in ssh_statemachine()
2231 sshc->quote_path2, in ssh_statemachine()
2232 curlx_uztoui(strlen(sshc->quote_path2)), in ssh_statemachine()
2240 if(rc && !sshc->acceptfail) { in ssh_statemachine()
2241 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2242 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2243 Curl_safefree(sshc->quote_path2); in ssh_statemachine()
2247 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2248 sshc->actualcode = CURLE_QUOTE_ERROR; in ssh_statemachine()
2255 rc = libssh2_sftp_rmdir_ex(sshc->sftp_session, sshc->quote_path1, in ssh_statemachine()
2256 curlx_uztoui(strlen(sshc->quote_path1))); in ssh_statemachine()
2260 if(rc && !sshc->acceptfail) { in ssh_statemachine()
2261 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2262 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2266 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2267 sshc->actualcode = CURLE_QUOTE_ERROR; in ssh_statemachine()
2274 rc = libssh2_sftp_unlink_ex(sshc->sftp_session, sshc->quote_path1, in ssh_statemachine()
2275 curlx_uztoui(strlen(sshc->quote_path1))); in ssh_statemachine()
2279 if(rc && !sshc->acceptfail) { in ssh_statemachine()
2280 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2281 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2284 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2285 sshc->actualcode = CURLE_QUOTE_ERROR; in ssh_statemachine()
2295 rc = libssh2_sftp_statvfs(sshc->sftp_session, sshc->quote_path1, in ssh_statemachine()
2296 curlx_uztoui(strlen(sshc->quote_path1)), in ssh_statemachine()
2302 if(rc && !sshc->acceptfail) { in ssh_statemachine()
2303 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2304 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2308 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2309 sshc->actualcode = CURLE_QUOTE_ERROR; in ssh_statemachine()
2339 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2347 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2348 sshc->actualcode = result; in ssh_statemachine()
2370 rc = libssh2_sftp_stat_ex(sshc->sftp_session, sshp->path, in ssh_statemachine()
2396 result = sftp_upload_init(data, sshc, sshp, block); in ssh_statemachine()
2399 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2400 sshc->actualcode = result; in ssh_statemachine()
2406 sshc->slash_pos = sshp->path + 1; /* ignore the leading '/' */ in ssh_statemachine()
2415 sshc->slash_pos = strchr(sshc->slash_pos, '/'); in ssh_statemachine()
2416 if(sshc->slash_pos) { in ssh_statemachine()
2417 *sshc->slash_pos = 0; in ssh_statemachine()
2428 rc = libssh2_sftp_mkdir_ex(sshc->sftp_session, sshp->path, in ssh_statemachine()
2434 *sshc->slash_pos = '/'; in ssh_statemachine()
2435 ++sshc->slash_pos; in ssh_statemachine()
2442 unsigned long sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2448 sshc->actualcode = result ? result : CURLE_SSH; in ssh_statemachine()
2467 sshc->sftp_handle = in ssh_statemachine()
2468 libssh2_sftp_open_ex(sshc->sftp_session, sshp->path, in ssh_statemachine()
2471 if(!sshc->sftp_handle) { in ssh_statemachine()
2473 if(libssh2_session_last_errno(sshc->ssh_session) == in ssh_statemachine()
2478 sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2483 sshc->actualcode = result ? result : CURLE_SSH; in ssh_statemachine()
2491 result = sftp_readdir(data, sshc, sshp, block); in ssh_statemachine()
2493 sshc->actualcode = result; in ssh_statemachine()
2500 libssh2_sftp_symlink_ex(sshc->sftp_session, in ssh_statemachine()
2516 sshc->actualcode = result; in ssh_statemachine()
2541 if(libssh2_sftp_closedir(sshc->sftp_handle) == in ssh_statemachine()
2546 sshc->sftp_handle = NULL; in ssh_statemachine()
2557 sshc->sftp_handle = in ssh_statemachine()
2558 libssh2_sftp_open_ex(sshc->sftp_session, sshp->path, in ssh_statemachine()
2562 if(!sshc->sftp_handle) { in ssh_statemachine()
2564 if(libssh2_session_last_errno(sshc->ssh_session) == in ssh_statemachine()
2569 sftperr = libssh2_sftp_last_error(sshc->sftp_session); in ssh_statemachine()
2574 sshc->actualcode = result ? result : CURLE_SSH; in ssh_statemachine()
2581 result = sftp_download_stat(data, sshc, sshp, block); in ssh_statemachine()
2584 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
2585 sshc->actualcode = result; in ssh_statemachine()
2590 if(sshc->sftp_handle) { in ssh_statemachine()
2591 rc = libssh2_sftp_close(sshc->sftp_handle); in ssh_statemachine()
2597 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2601 sshc->sftp_handle = NULL; in ssh_statemachine()
2611 if(sshc->nextstate != SSH_NO_STATE && in ssh_statemachine()
2612 sshc->nextstate != SSH_SFTP_CLOSE) { in ssh_statemachine()
2613 state(data, sshc->nextstate); in ssh_statemachine()
2614 sshc->nextstate = SSH_SFTP_CLOSE; in ssh_statemachine()
2618 result = sshc->actualcode; in ssh_statemachine()
2627 if(sshc->sftp_handle) { in ssh_statemachine()
2628 rc = libssh2_sftp_close(sshc->sftp_handle); in ssh_statemachine()
2634 (void)libssh2_session_last_error(sshc->ssh_session, &err_msg, in ssh_statemachine()
2638 sshc->sftp_handle = NULL; in ssh_statemachine()
2640 if(sshc->sftp_session) { in ssh_statemachine()
2641 rc = libssh2_sftp_shutdown(sshc->sftp_session); in ssh_statemachine()
2648 sshc->sftp_session = NULL; in ssh_statemachine()
2651 Curl_safefree(sshc->homedir); in ssh_statemachine()
2658 result = Curl_getworkingpath(data, sshc->homedir, &sshp->path); in ssh_statemachine()
2660 sshc->actualcode = result; in ssh_statemachine()
2668 sshc->actualcode = CURLE_UPLOAD_FAILED; in ssh_statemachine()
2686 sshc->ssh_channel = in ssh_statemachine()
2687 SCP_SEND(sshc->ssh_session, sshp->path, data->set.new_file_perms, in ssh_statemachine()
2689 if(!sshc->ssh_channel) { in ssh_statemachine()
2693 if(libssh2_session_last_errno(sshc->ssh_session) == in ssh_statemachine()
2699 ssh_err = (int)(libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2703 sshc->actualcode = libssh2_session_error_to_CURLE(ssh_err); in ssh_statemachine()
2705 if(sshc->actualcode == CURLE_SSH || in ssh_statemachine()
2706 sshc->actualcode == CURLE_REMOTE_FILE_NOT_FOUND) in ssh_statemachine()
2707 sshc->actualcode = CURLE_UPLOAD_FAILED; in ssh_statemachine()
2721 sshc->actualcode = result; in ssh_statemachine()
2726 sshc->orig_waitfor = data->req.keepon; in ssh_statemachine()
2754 sshc->ssh_channel = libssh2_scp_recv(sshc->ssh_session, in ssh_statemachine()
2759 sshc->ssh_channel = libssh2_scp_recv2(sshc->ssh_session, in ssh_statemachine()
2763 if(!sshc->ssh_channel) { in ssh_statemachine()
2767 if(libssh2_session_last_errno(sshc->ssh_session) == in ssh_statemachine()
2774 ssh_err = (int)(libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2778 sshc->actualcode = libssh2_session_error_to_CURLE(ssh_err); in ssh_statemachine()
2797 sshc->actualcode = result; in ssh_statemachine()
2812 if(sshc->ssh_channel) { in ssh_statemachine()
2813 rc = libssh2_channel_send_eof(sshc->ssh_channel); in ssh_statemachine()
2819 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2829 if(sshc->ssh_channel) { in ssh_statemachine()
2830 rc = libssh2_channel_wait_eof(sshc->ssh_channel); in ssh_statemachine()
2836 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2845 if(sshc->ssh_channel) { in ssh_statemachine()
2846 rc = libssh2_channel_wait_closed(sshc->ssh_channel); in ssh_statemachine()
2852 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2861 if(sshc->ssh_channel) { in ssh_statemachine()
2862 rc = libssh2_channel_free(sshc->ssh_channel); in ssh_statemachine()
2868 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2873 sshc->ssh_channel = NULL; in ssh_statemachine()
2880 result = sshc->actualcode; in ssh_statemachine()
2887 if(sshc->ssh_channel) { in ssh_statemachine()
2888 rc = libssh2_channel_free(sshc->ssh_channel); in ssh_statemachine()
2894 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2899 sshc->ssh_channel = NULL; in ssh_statemachine()
2902 if(sshc->ssh_session) { in ssh_statemachine()
2903 rc = libssh2_session_disconnect(sshc->ssh_session, "Shutdown"); in ssh_statemachine()
2909 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2916 Curl_safefree(sshc->homedir); in ssh_statemachine()
2924 if(sshc->kh) { in ssh_statemachine()
2925 libssh2_knownhost_free(sshc->kh); in ssh_statemachine()
2926 sshc->kh = NULL; in ssh_statemachine()
2931 if(sshc->ssh_agent) { in ssh_statemachine()
2932 rc = libssh2_agent_disconnect(sshc->ssh_agent); in ssh_statemachine()
2938 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2943 libssh2_agent_free(sshc->ssh_agent); in ssh_statemachine()
2944 sshc->ssh_agent = NULL; in ssh_statemachine()
2948 sshc->sshagent_identity = NULL; in ssh_statemachine()
2949 sshc->sshagent_prev_identity = NULL; in ssh_statemachine()
2953 if(sshc->ssh_session) { in ssh_statemachine()
2954 rc = libssh2_session_free(sshc->ssh_session); in ssh_statemachine()
2960 (void)libssh2_session_last_error(sshc->ssh_session, in ssh_statemachine()
2964 sshc->ssh_session = NULL; in ssh_statemachine()
2969 DEBUGASSERT(sshc->ssh_session == NULL); in ssh_statemachine()
2970 DEBUGASSERT(sshc->ssh_channel == NULL); in ssh_statemachine()
2971 DEBUGASSERT(sshc->sftp_session == NULL); in ssh_statemachine()
2972 DEBUGASSERT(sshc->sftp_handle == NULL); in ssh_statemachine()
2974 DEBUGASSERT(sshc->kh == NULL); in ssh_statemachine()
2977 DEBUGASSERT(sshc->ssh_agent == NULL); in ssh_statemachine()
2980 Curl_safefree(sshc->rsa_pub); in ssh_statemachine()
2981 Curl_safefree(sshc->rsa); in ssh_statemachine()
2982 Curl_safefree(sshc->quote_path1); in ssh_statemachine()
2983 Curl_safefree(sshc->quote_path2); in ssh_statemachine()
2984 Curl_safefree(sshc->homedir); in ssh_statemachine()
2987 result = sshc->actualcode; in ssh_statemachine()
2989 memset(sshc, 0, sizeof(struct ssh_conn)); in ssh_statemachine()
2992 sshc->state = SSH_SESSION_FREE; /* current */ in ssh_statemachine()
2993 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
3000 sshc->nextstate = SSH_NO_STATE; in ssh_statemachine()
3005 } while(!rc && (sshc->state != SSH_STOP)); in ssh_statemachine()
3046 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_block2waitfor() local
3049 dir = libssh2_session_block_directions(sshc->ssh_session); in ssh_block2waitfor()
3059 conn->waitfor = sshc->orig_waitfor; in ssh_block2waitfor()
3066 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_multi_statemach() local
3072 *done = (sshc->state == SSH_STOP); in ssh_multi_statemach()
3085 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_block_statemach() local
3089 while((sshc->state != SSH_STOP) && !result) { in ssh_block_statemach()
3120 int dir = libssh2_session_block_directions(sshc->ssh_session); in ssh_block_statemach()
3165 struct ssh_conn *ssh = &conn->proto.sshc; in ssh_tls_recv()
3190 struct ssh_conn *ssh = &conn->proto.sshc; in ssh_tls_send()
3217 struct ssh_conn *sshc; in ssh_connect() local
3232 sshc = &conn->proto.sshc; in ssh_connect()
3246 sshc->ssh_session = libssh2_session_init_ex(my_libssh2_malloc, in ssh_connect()
3250 if(!sshc->ssh_session) { in ssh_connect()
3258 libssh2_session_set_read_timeout(sshc->ssh_session, in ssh_connect()
3279 libssh2_session_callback_set2(sshc->ssh_session, in ssh_connect()
3282 libssh2_session_callback_set2(sshc->ssh_session, in ssh_connect()
3306 libssh2_session_callback_set(sshc->ssh_session, in ssh_connect()
3308 libssh2_session_callback_set(sshc->ssh_session, in ssh_connect()
3314 sshc->tls_recv = conn->recv[FIRSTSOCKET]; in ssh_connect()
3315 sshc->tls_send = conn->send[FIRSTSOCKET]; in ssh_connect()
3330 if(libssh2_session_flag(sshc->ssh_session, LIBSSH2_FLAG_COMPRESS, 1) < 0) in ssh_connect()
3338 sshc->kh = libssh2_knownhost_init(sshc->ssh_session); in ssh_connect()
3339 if(!sshc->kh) { in ssh_connect()
3340 libssh2_session_free(sshc->ssh_session); in ssh_connect()
3341 sshc->ssh_session = NULL; in ssh_connect()
3346 rc = libssh2_knownhost_readfile(sshc->kh, in ssh_connect()
3356 libssh2_trace(sshc->ssh_session, ~0); in ssh_connect()
3425 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_do() local
3431 sshc->actualcode = CURLE_OK; /* reset error code */ in ssh_do()
3432 sshc->secondCreateDirs = 0; /* reset the create dir attempt state in ssh_do()
3456 struct ssh_conn *sshc = &conn->proto.sshc; in scp_disconnect() local
3459 if(sshc->ssh_session) { in scp_disconnect()
3510 struct ssh_conn *sshc = &conn->proto.sshc; in scp_send() local
3515 nwrite = (ssize_t) libssh2_channel_write(sshc->ssh_channel, mem, len); in scp_send()
3536 struct ssh_conn *sshc = &conn->proto.sshc; in scp_recv() local
3540 nread = (ssize_t) libssh2_channel_read(sshc->ssh_channel, mem, len); in scp_recv()
3609 struct ssh_conn *sshc = &conn->proto.sshc; in sftp_disconnect() local
3614 if(sshc->ssh_session) { in sftp_disconnect()
3630 struct ssh_conn *sshc = &conn->proto.sshc; in sftp_done() local
3637 sshc->nextstate = SSH_SFTP_POSTQUOTE_INIT; in sftp_done()
3649 struct ssh_conn *sshc = &conn->proto.sshc; in sftp_send() local
3653 nwrite = libssh2_sftp_write(sshc->sftp_handle, mem, len); in sftp_send()
3678 struct ssh_conn *sshc = &conn->proto.sshc; in sftp_recv() local
3681 nread = libssh2_sftp_read(sshc->sftp_handle, mem, len); in sftp_recv()
3794 struct ssh_conn *sshc = &conn->proto.sshc; in ssh_attach() local
3795 if(sshc->ssh_session) { in ssh_attach()
3797 void **abstract = libssh2_session_abstract(sshc->ssh_session); in ssh_attach()