diff options
author | Patrick Monnerat <Patrick.Monnerat@datasphere.ch> | 2007-10-12 13:36:37 +0000 |
---|---|---|
committer | Patrick Monnerat <Patrick.Monnerat@datasphere.ch> | 2007-10-12 13:36:37 +0000 |
commit | 07b6e7363d910ad4828376d568a2f19fd8d64661 (patch) | |
tree | 1b61554caff5805e38ee72f2151e80c0675610ae /lib/ssh.c | |
parent | 2741f97a69e79a8489e395f105bff0d92567bc21 (diff) |
Added per-protocol callback static tables, replacing callback ptr storage
in the connectdata structure by a single handler table ptr.
Diffstat (limited to 'lib/ssh.c')
-rw-r--r-- | lib/ssh.c | 82 |
1 files changed, 69 insertions, 13 deletions
@@ -134,6 +134,63 @@ static LIBSSH2_FREE_FUNC(libssh2_free); static int get_pathname(const char **cpp, char **path); +static CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done); +static CURLcode Curl_ssh_multi_statemach(struct connectdata *conn, bool *done); + +static CURLcode Curl_scp_do(struct connectdata *conn, bool *done); +static CURLcode Curl_scp_done(struct connectdata *conn, + CURLcode, bool premature); +static CURLcode Curl_scp_doing(struct connectdata *conn, + bool *dophase_done); + +static CURLcode Curl_sftp_do(struct connectdata *conn, bool *done); +static CURLcode Curl_sftp_done(struct connectdata *conn, + CURLcode, bool premature); +static CURLcode Curl_sftp_doing(struct connectdata *conn, + bool *dophase_done); + +/* + * SCP protocol handler. + */ + +const struct Curl_handler Curl_handler_scp = { + "SCP", /* scheme */ + NULL, /* setup_connection */ + Curl_scp_do, /* do_it */ + Curl_scp_done, /* done */ + NULL, /* do_more */ + Curl_ssh_connect, /* connect_it */ + Curl_ssh_multi_statemach, /* connecting */ + Curl_scp_doing, /* doing */ + NULL, /* proto_getsock */ + NULL, /* doing_getsock */ + NULL, /* disconnect */ + PORT_SSH, /* defport */ + PROT_SCP /* protocol */ +}; + + +/* + * SFTP protocol handler. + */ + +const struct Curl_handler Curl_handler_sftp = { + "SFTP", /* scheme */ + NULL, /* setup_connection */ + Curl_sftp_do, /* do_it */ + Curl_sftp_done, /* done */ + NULL, /* do_more */ + Curl_ssh_connect, /* connect_it */ + Curl_ssh_multi_statemach, /* connecting */ + Curl_sftp_doing, /* doing */ + NULL, /* proto_getsock */ + NULL, /* doing_getsock */ + NULL, /* disconnect */ + PORT_SSH, /* defport */ + PROT_SFTP /* protocol */ +}; + + static void kbd_callback(const char *name, int name_len, const char *instruction, int instruction_len, int num_prompts, @@ -1719,8 +1776,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn) } /* called repeatedly until done from multi.c */ -CURLcode Curl_ssh_multi_statemach(struct connectdata *conn, - bool *done) +static CURLcode Curl_ssh_multi_statemach(struct connectdata *conn, bool *done) { struct ssh_conn *sshc = &conn->proto.sshc; CURLcode result = CURLE_OK; @@ -1783,7 +1839,7 @@ static CURLcode ssh_init(struct connectdata *conn) * Curl_ssh_connect() gets called from Curl_protocol_connect() to allow us to * do protocol-specific actions at connect-time. */ -CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done) +static CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done) { struct SSHPROTO *ssh; curl_socket_t sock; @@ -1878,8 +1934,8 @@ CURLcode scp_perform(struct connectdata *conn, } /* called from multi.c while DOing */ -CURLcode Curl_scp_doing(struct connectdata *conn, - bool *dophase_done) +static CURLcode Curl_scp_doing(struct connectdata *conn, + bool *dophase_done) { CURLcode result; result = Curl_ssh_multi_statemach(conn, dophase_done); @@ -1891,7 +1947,7 @@ CURLcode Curl_scp_doing(struct connectdata *conn, } -CURLcode Curl_scp_do(struct connectdata *conn, bool *done) +static CURLcode Curl_scp_do(struct connectdata *conn, bool *done) { CURLcode res; bool connected = 0; @@ -1931,8 +1987,8 @@ CURLcode Curl_scp_do(struct connectdata *conn, bool *done) return res; } -CURLcode Curl_scp_done(struct connectdata *conn, CURLcode status, - bool premature) +static CURLcode Curl_scp_done(struct connectdata *conn, CURLcode status, + bool premature) { CURLcode result = CURLE_OK; bool done = FALSE; @@ -2048,8 +2104,8 @@ CURLcode sftp_perform(struct connectdata *conn, } /* called from multi.c while DOing */ -CURLcode Curl_sftp_doing(struct connectdata *conn, - bool *dophase_done) +static CURLcode Curl_sftp_doing(struct connectdata *conn, + bool *dophase_done) { CURLcode result; result = Curl_ssh_multi_statemach(conn, dophase_done); @@ -2060,7 +2116,7 @@ CURLcode Curl_sftp_doing(struct connectdata *conn, return result; } -CURLcode Curl_sftp_do(struct connectdata *conn, bool *done) +static CURLcode Curl_sftp_do(struct connectdata *conn, bool *done) { CURLcode res; bool connected = 0; @@ -2100,8 +2156,8 @@ CURLcode Curl_sftp_do(struct connectdata *conn, bool *done) return res; } -CURLcode Curl_sftp_done(struct connectdata *conn, CURLcode status, - bool premature) +static CURLcode Curl_sftp_done(struct connectdata *conn, CURLcode status, + bool premature) { CURLcode result = CURLE_OK; bool done = FALSE; |