• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/curl/curl-7.36.0/lib/

Lines Matching defs:conn

118 static CURLcode ssh_connect(struct connectdata *conn, bool *done);
119 static CURLcode ssh_multi_statemach(struct connectdata *conn, bool *done);
120 static CURLcode ssh_do(struct connectdata *conn, bool *done);
122 static CURLcode ssh_getworkingpath(struct connectdata *conn,
126 static CURLcode scp_done(struct connectdata *conn,
128 static CURLcode scp_doing(struct connectdata *conn,
130 static CURLcode scp_disconnect(struct connectdata *conn, bool dead_connection);
132 static CURLcode sftp_done(struct connectdata *conn,
134 static CURLcode sftp_doing(struct connectdata *conn,
136 static CURLcode sftp_disconnect(struct connectdata *conn, bool dead);
138 CURLcode sftp_perform(struct connectdata *conn,
142 static int ssh_getsock(struct connectdata *conn,
147 static int ssh_perform_getsock(const struct connectdata *conn,
152 static CURLcode ssh_setup_connection(struct connectdata *conn);
212 struct connectdata *conn = (struct connectdata *)*abstract;
227 responses[0].text = strdup(conn->passwd);
228 responses[0].length = curlx_uztoui(strlen(conn->passwd));
329 static void state(struct connectdata *conn, sshstate nowstate)
331 struct ssh_conn *sshc = &conn->proto.sshc;
393 infof(conn->data, "SFTP %p state change from %s to %s\n",
402 static CURLcode ssh_getworkingpath(struct connectdata *conn,
407 struct SessionHandle *data = conn->data;
418 if(conn->handler->protocol & CURLPROTO_SCP) {
430 else if(conn->handler->protocol & CURLPROTO_SFTP) {
511 static CURLcode ssh_knownhost(struct connectdata *conn)
516 struct SessionHandle *data = conn->data;
520 struct ssh_conn *sshc = &conn->proto.sshc;
547 conn->host.name,
592 state(conn, SSH_SESSION_FREE);
604 conn->host.name, NULL,
611 conn->host.name);
629 (void)conn;
634 static CURLcode ssh_check_fingerprint(struct connectdata *conn)
636 struct ssh_conn *sshc = &conn->proto.sshc;
637 struct SessionHandle *data = conn->data;
664 state(conn, SSH_SESSION_FREE);
675 return ssh_knownhost(conn);
685 static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
688 struct SessionHandle *data = conn->data;
690 struct ssh_conn *sshc = &conn->proto.sshc;
691 curl_socket_t sock = conn->sock[FIRSTSOCKET];
710 state(conn, SSH_S_STARTUP);
720 state(conn, SSH_SESSION_FREE);
725 state(conn, SSH_HOSTKEY);
734 result = ssh_check_fingerprint(conn);
736 state(conn, SSH_AUTHLIST);
752 conn->user,
753 curlx_uztoui(strlen(conn->user)));
759 state(conn, SSH_AUTH_DONE);
768 state(conn, SSH_SESSION_FREE);
776 state(conn, SSH_AUTH_PKEY_INIT);
810 state(conn, SSH_SESSION_FREE);
826 state(conn, SSH_SESSION_FREE);
840 state(conn, SSH_AUTH_PKEY);
843 state(conn, SSH_AUTH_PASS_INIT);
851 conn->user,
853 strlen(conn->user)),
866 state(conn, SSH_AUTH_DONE);
873 state(conn, SSH_AUTH_PASS_INIT);
880 state(conn, SSH_AUTH_PASS);
883 state(conn, SSH_AUTH_HOST_INIT);
888 rc = libssh2_userauth_password_ex(sshc->ssh_session, conn->user,
889 curlx_uztoui(strlen(conn->user)),
890 conn->passwd,
891 curlx_uztoui(strlen(conn->passwd)),
899 state(conn, SSH_AUTH_DONE);
902 state(conn, SSH_AUTH_HOST_INIT);
909 state(conn, SSH_AUTH_HOST);
912 state(conn, SSH_AUTH_AGENT_INIT);
917 state(conn, SSH_AUTH_AGENT_INIT);
933 state(conn, SSH_AUTH_KEY_INIT);
943 state(conn, SSH_AUTH_KEY_INIT);
946 state(conn, SSH_AUTH_AGENT_LIST);
951 state(conn, SSH_AUTH_KEY_INIT);
962 state(conn, SSH_AUTH_KEY_INIT);
965 state(conn, SSH_AUTH_AGENT);
983 rc = libssh2_agent_userauth(sshc->ssh_agent, conn->user,
1003 state(conn, SSH_AUTH_DONE);
1006 state(conn, SSH_AUTH_KEY_INIT);
1013 state(conn, SSH_AUTH_KEY);
1016 state(conn, SSH_AUTH_DONE);
1023 conn->user,
1025 strlen(conn->user)),
1034 state(conn, SSH_AUTH_DONE);
1040 state(conn, SSH_SESSION_FREE);
1050 Curl_pgrsTime(conn->data, TIMER_APPCONNECT); /* SSH is connected */
1052 conn->sockfd = sock;
1053 conn->writesockfd = CURL_SOCKET_BAD;
1055 if(conn->handler->protocol == CURLPROTO_SFTP) {
1056 state(conn, SSH_SFTP_INIT);
1060 state(conn, SSH_STOP);
1080 state(conn, SSH_SESSION_FREE);
1085 state(conn, SSH_SFTP_REALPATH);
1105 state(conn, SSH_SFTP_CLOSE);
1109 conn->data->state.most_recent_ftp_entrypath = sshc->homedir;
1118 state(conn, SSH_STOP);
1127 state(conn, SSH_STOP);
1132 result = ssh_getworkingpath(conn, sshc->homedir, &sftp_scp->path);
1135 state(conn, SSH_STOP);
1142 state(conn, SSH_SFTP_QUOTE);
1145 state(conn, SSH_SFTP_TRANS_INIT);
1153 state(conn, SSH_SFTP_QUOTE);
1156 state(conn, SSH_STOP);
1187 state(conn, SSH_SFTP_CLOSE);
1192 Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"PWD\n", 4, conn);
1193 Curl_debug(data, CURLINFO_HEADER_IN, tmp, strlen(tmp), conn);
1198 result = Curl_client_write(conn, CLIENTWRITE_HEADER, tmp, strlen(tmp));
1201 state(conn, SSH_SFTP_CLOSE);
1206 state(conn, SSH_SFTP_NEXT_QUOTE);
1217 state(conn, SSH_SFTP_CLOSE);
1233 state(conn, SSH_SFTP_CLOSE);
1260 state(conn, SSH_SFTP_CLOSE);
1266 state(conn, SSH_SFTP_QUOTE_STAT);
1282 state(conn, SSH_SFTP_CLOSE);
1287 state(conn, SSH_SFTP_QUOTE_SYMLINK);
1292 state(conn, SSH_SFTP_QUOTE_MKDIR);
1306 state(conn, SSH_SFTP_CLOSE);
1311 state(conn, SSH_SFTP_QUOTE_RENAME);
1316 state(conn, SSH_SFTP_QUOTE_RMDIR);
1320 state(conn, SSH_SFTP_QUOTE_UNLINK);
1327 state(conn, SSH_SFTP_CLOSE);
1334 state(conn, SSH_SFTP_TRANS_INIT);
1345 state(conn, SSH_SFTP_QUOTE);
1349 state(conn, sshc->nextstate);
1353 state(conn, SSH_SFTP_TRANS_INIT);
1391 state(conn, SSH_SFTP_CLOSE);
1407 state(conn, SSH_SFTP_CLOSE);
1422 state(conn, SSH_SFTP_CLOSE);
1436 state(conn, SSH_SFTP_CLOSE);
1444 state(conn, SSH_SFTP_QUOTE_SETSTAT);
1462 state(conn, SSH_SFTP_CLOSE);
1467 state(conn, SSH_SFTP_NEXT_QUOTE);
1485 state(conn, SSH_SFTP_CLOSE);
1490 state(conn, SSH_SFTP_NEXT_QUOTE);
1504 state(conn, SSH_SFTP_CLOSE);
1509 state(conn, SSH_SFTP_NEXT_QUOTE);
1529 state(conn, SSH_SFTP_CLOSE);
1534 state(conn, SSH_SFTP_NEXT_QUOTE);
1547 state(conn, SSH_SFTP_CLOSE);
1552 state(conn, SSH_SFTP_NEXT_QUOTE);
1565 state(conn, SSH_SFTP_CLOSE);
1570 state(conn, SSH_SFTP_NEXT_QUOTE);
1575 state(conn, SSH_SFTP_UPLOAD_INIT);
1578 state(conn, SSH_SFTP_READDIR_INIT);
1580 state(conn, SSH_SFTP_DOWNLOAD_INIT);
1647 state(conn, SSH_SFTP_CLOSE);
1661 state(conn, SSH_SFTP_CREATE_DIRS_INIT);
1664 state(conn, SSH_SFTP_CLOSE);
1685 if(conn->seek_func) {
1686 seekerr = conn->seek_func(conn->seek_client, data->state.resume_from,
1705 conn->fread_func(data->state.buffer, 1, readthisamountnow,
1706 conn->fread_in);
1733 Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
1736 conn->sockfd = conn->writesockfd;
1739 state(conn, SSH_SFTP_CLOSE);
1750 conn->cselect_bits = CURL_CSELECT_OUT;
1757 state(conn, SSH_STOP);
1765 state(conn, SSH_SFTP_CREATE_DIRS);
1768 state(conn, SSH_SFTP_UPLOAD_INIT);
1777 state(conn, SSH_SFTP_CREATE_DIRS_MKDIR);
1781 state(conn, SSH_SFTP_UPLOAD_INIT);
1806 state(conn, SSH_SFTP_CLOSE);
1811 state(conn, SSH_SFTP_CREATE_DIRS);
1817 state(conn, SSH_STOP);
1840 state(conn, SSH_SFTP_CLOSE);
1847 state(conn, SSH_SFTP_CLOSE);
1853 state(conn, SSH_SFTP_CLOSE);
1857 state(conn, SSH_SFTP_READDIR);
1879 state(conn, SSH_SFTP_CLOSE);
1883 result = Curl_client_write(conn, CLIENTWRITE_BODY,
1888 state(conn, SSH_STOP);
1898 sshc->readdir_len, conn);
1908 state(conn, SSH_SFTP_CLOSE);
1922 state(conn, SSH_SFTP_CLOSE);
1929 state(conn, SSH_SFTP_READDIR_LINK);
1932 state(conn, SSH_SFTP_READDIR_BOTTOM);
1939 state(conn, SSH_SFTP_READDIR_DONE);
1951 state(conn, SSH_SFTP_CLOSE);
1976 state(conn, SSH_SFTP_CLOSE);
1989 state(conn, SSH_SFTP_READDIR_BOTTOM);
1997 result = Curl_client_write(conn, CLIENTWRITE_BODY,
2006 sshc->readdir_currLen, conn);
2012 state(conn, SSH_STOP);
2015 state(conn, SSH_SFTP_READDIR);
2029 Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
2030 state(conn, SSH_STOP);
2052 state(conn, SSH_SFTP_CLOSE);
2058 state(conn, SSH_SFTP_DOWNLOAD_STAT);
2087 if(conn->data->state.use_range) {
2092 from=curlx_strtoofft(conn->data->state.range, &ptr, 0);
2118 SFTP_SEEK(conn->proto.sshc.sftp_handle, from);
2160 Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
2162 state(conn, SSH_STOP);
2166 Curl_setup_transfer(conn, FIRSTSOCKET, data->req.size,
2170 conn->writesockfd = conn->sockfd;
2175 conn->cselect_bits = CURL_CSELECT_IN;
2180 state(conn, SSH_SFTP_CLOSE);
2184 state(conn, SSH_STOP);
2209 state(conn, sshc->nextstate);
2213 state(conn, SSH_STOP);
2245 conn->data->state.most_recent_ftp_entrypath = NULL;
2247 state(conn, SSH_SESSION_DISCONNECT);
2251 result = ssh_getworkingpath(conn, sshc->homedir, &sftp_scp->path);
2254 state(conn, SSH_STOP);
2262 state(conn, SSH_SCP_CHANNEL_FREE);
2265 state(conn, SSH_SCP_UPLOAD_INIT);
2268 state(conn, SSH_SCP_DOWNLOAD_INIT);
2294 failf(conn->data, "%s", err_msg);
2295 state(conn, SSH_SCP_CHANNEL_FREE);
2302 Curl_setup_transfer(conn, -1, data->req.size, FALSE, NULL,
2306 conn->sockfd = conn->writesockfd;
2309 state(conn, SSH_SCP_CHANNEL_FREE);
2320 conn->cselect_bits = CURL_CSELECT_OUT;
2322 state(conn, SSH_STOP);
2353 failf(conn->data, "%s", err_msg);
2354 state(conn, SSH_SCP_CHANNEL_FREE);
2363 Curl_setup_transfer(conn, FIRSTSOCKET, bytecount, FALSE, NULL, -1, NULL);
2366 conn->writesockfd = conn->sockfd;
2371 conn->cselect_bits = CURL_CSELECT_IN;
2374 state(conn, SSH_SCP_CHANNEL_FREE);
2378 state(conn, SSH_STOP);
2384 state(conn, SSH_SCP_SEND_EOF);
2386 state(conn, SSH_SCP_CHANNEL_FREE);
2399 state(conn, SSH_SCP_WAIT_EOF);
2412 state(conn, SSH_SCP_WAIT_CLOSE);
2425 state(conn, SSH_SCP_CHANNEL_FREE);
2441 state(conn, SSH_SESSION_DISCONNECT);
2443 state(conn, SSH_STOP);
2473 conn->data->state.most_recent_ftp_entrypath = NULL;
2475 state(conn, SSH_SESSION_FREE);
2547 conn->bits.close = TRUE;
2550 state(conn, SSH_STOP);
2558 state(conn, SSH_STOP);
2575 static int ssh_perform_getsock(const struct connectdata *conn,
2584 sock[0] = conn->sock[FIRSTSOCKET];
2586 if(conn->waitfor & KEEP_RECV)
2589 if(conn->waitfor & KEEP_SEND)
2596 return Curl_single_getsock(conn, sock, numsocks);
2602 static int ssh_getsock(struct connectdata *conn,
2608 (void)conn;
2617 return ssh_perform_getsock(conn, sock, numsocks);
2629 static void ssh_block2waitfor(struct connectdata *conn, bool block)
2631 struct ssh_conn *sshc = &conn->proto.sshc;
2635 conn->waitfor = ((dir&LIBSSH2_SESSION_BLOCK_INBOUND)?KEEP_RECV:0) |
2641 conn->waitfor = sshc->orig_waitfor;
2649 static CURLcode ssh_multi_statemach(struct connectdata *conn, bool *done)
2651 struct ssh_conn *sshc = &conn->proto.sshc;
2656 result = ssh_statemach_act(conn, &block);
2658 ssh_block2waitfor(conn, block);
2663 static CURLcode ssh_block_statemach(struct connectdata *conn,
2666 struct ssh_conn *sshc = &conn->proto.sshc;
2668 struct SessionHandle *data = conn->data;
2674 result = ssh_statemach_act(conn, &block);
2678 if(Curl_pgrsUpdate(conn))
2696 curl_socket_t sock = conn->sock[FIRSTSOCKET];
2717 static CURLcode ssh_setup_connection(struct connectdata *conn)
2721 conn->data->req.protop = ssh = calloc(1, sizeof(struct SSHPROTO));
2735 static CURLcode ssh_connect(struct connectdata *conn, bool *done)
2742 struct SessionHandle *data = conn->data;
2746 ssh_setup_connection(conn);
2750 conn->bits.close = FALSE;
2752 if(conn->handler->protocol & CURLPROTO_SCP) {
2753 conn->recv[FIRSTSOCKET] = scp_recv;
2754 conn->send[FIRSTSOCKET] = scp_send;
2757 conn->recv[FIRSTSOCKET] = sftp_recv;
2758 conn->send[FIRSTSOCKET] = sftp_send;
2760 ssh = &conn->proto.sshc;
2763 if(conn->user) {
2764 infof(data, "User: %s\n", conn->user);
2766 if(conn->passwd) {
2767 infof(data, "Password: %s\n", conn->passwd);
2769 sock = conn->sock[FIRSTSOCKET];
2774 my_libssh2_realloc, conn);
2804 state(conn, SSH_INIT);
2806 result = ssh_multi_statemach(conn, done);
2821 CURLcode scp_perform(struct connectdata *conn,
2827 DEBUGF(infof(conn->data, "DO phase starts\n"));
2832 state(conn, SSH_SCP_TRANS_INIT);
2835 result = ssh_multi_statemach(conn, dophase_done);
2837 *connected = conn->bits.tcpconnect[FIRSTSOCKET];
2840 DEBUGF(infof(conn->data, "DO phase is complete\n"));
2847 static CURLcode scp_doing(struct connectdata *conn,
2851 result = ssh_multi_statemach(conn, dophase_done);
2854 DEBUGF(infof(conn->data, "DO phase is complete\n"));
2864 static CURLcode ssh_do(struct connectdata *conn, bool *done)
2868 struct SessionHandle *data = conn->data;
2869 struct ssh_conn *sshc = &conn->proto.sshc;
2884 if(conn->handler->protocol & CURLPROTO_SCP)
2885 res = scp_perform(conn, &connected, done);
2887 res = sftp_perform(conn, &connected, done);
2895 static CURLcode scp_disconnect(struct connectdata *conn, bool dead_connection)
2898 struct ssh_conn *ssh = &conn->proto.sshc;
2901 Curl_safefree(conn->data->req.protop);
2906 state(conn, SSH_SESSION_DISCONNECT);
2908 result = ssh_block_statemach(conn, FALSE);
2916 static CURLcode ssh_done(struct connectdata *conn, CURLcode status)
2919 struct SSHPROTO *sftp_scp = conn->data->req.protop;
2929 result = ssh_block_statemach(conn, FALSE);
2936 if(Curl_pgrsDone(conn))
2939 conn->data->req.keepon = 0; /* clear all bits */
2944 static CURLcode scp_done(struct connectdata *conn, CURLcode status,
2950 state(conn, SSH_SCP_DONE);
2952 return ssh_done(conn, status);
2957 static ssize_t scp_send(struct connectdata *conn, int sockindex,
2965 libssh2_channel_write(conn->proto.sshc.ssh_channel, mem, len);
2967 ssh_block2waitfor(conn, (nwrite == LIBSSH2_ERROR_EAGAIN)?TRUE:FALSE);
2985 static ssize_t scp_recv(struct connectdata *conn, int sockindex,
2993 libssh2_channel_read(conn->proto.sshc.ssh_channel, mem, len);
2995 ssh_block2waitfor(conn, (nread == LIBSSH2_ERROR_EAGAIN)?TRUE:FALSE);
3018 CURLcode sftp_perform(struct connectdata *conn,
3024 DEBUGF(infof(conn->data, "DO phase starts\n"));
3029 state(conn, SSH_SFTP_QUOTE_INIT);
3032 result = ssh_multi_statemach(conn, dophase_done);
3034 *connected = conn->bits.tcpconnect[FIRSTSOCKET];
3037 DEBUGF(infof(conn->data, "DO phase is complete\n"));
3044 static CURLcode sftp_doing(struct connectdata *conn,
3048 result = ssh_multi_statemach(conn, dophase_done);
3051 DEBUGF(infof(conn->data, "DO phase is complete\n"));
3059 static CURLcode sftp_disconnect(struct connectdata *conn, bool dead_connection)
3064 DEBUGF(infof(conn->data, "SSH DISCONNECT starts now\n"));
3066 Curl_safefree(conn->data->req.protop);
3068 if(conn->proto.sshc.ssh_session) {
3070 state(conn, SSH_SFTP_SHUTDOWN);
3071 result = ssh_block_statemach(conn, FALSE);
3074 DEBUGF(infof(conn->data, "SSH DISCONNECT is done\n"));
3080 static CURLcode sftp_done(struct connectdata *conn, CURLcode status,
3083 struct ssh_conn *sshc = &conn->proto.sshc;
3089 if(!status && !premature && conn->data->set.postquote) {
3091 state(conn, SSH_SFTP_CLOSE);
3094 state(conn, SSH_SFTP_CLOSE);
3096 return ssh_done(conn, status);
3100 static ssize_t sftp_send(struct connectdata *conn, int sockindex,
3108 nwrite = libssh2_sftp_write(conn->proto.sshc.sftp_handle, mem, len);
3110 ssh_block2waitfor(conn, (nwrite == LIBSSH2_ERROR_EAGAIN)?TRUE:FALSE);
3128 static ssize_t sftp_recv(struct connectdata *conn, int sockindex,
3134 nread = libssh2_sftp_read(conn->proto.sshc.sftp_handle, mem, len);
3136 ssh_block2waitfor(conn, (nread == LIBSSH2_ERROR_EAGAIN)?TRUE:FALSE);