1
0
mirror of https://github.com/libssh2/libssh2.git synced 2025-11-21 14:00:51 +03:00

made sure the SFTP code makes more use of internal non-blocking functions

instead of the external API entries
This commit is contained in:
Daniel Stenberg
2009-03-29 22:09:29 +00:00
parent 60ee30b6c9
commit 117b95e6e3
3 changed files with 86 additions and 59 deletions

View File

@@ -572,9 +572,9 @@ static LIBSSH2_SFTP *sftp_init(LIBSSH2_SESSION *session)
if (session->sftpInit_state == libssh2_NB_state_created) {
session->sftpInit_channel =
libssh2_channel_open_ex(session, "session", sizeof("session") - 1,
LIBSSH2_CHANNEL_WINDOW_DEFAULT,
LIBSSH2_CHANNEL_PACKET_DEFAULT, NULL, 0);
_libssh2_channel_open(session, "session", sizeof("session") - 1,
LIBSSH2_CHANNEL_WINDOW_DEFAULT,
LIBSSH2_CHANNEL_PACKET_DEFAULT, NULL, 0);
if (!session->sftpInit_channel) {
if (libssh2_session_last_errno(session) == LIBSSH2_ERROR_EAGAIN) {
libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
@@ -592,10 +592,10 @@ static LIBSSH2_SFTP *sftp_init(LIBSSH2_SESSION *session)
}
if (session->sftpInit_state == libssh2_NB_state_sent) {
rc = libssh2_channel_process_startup(session->sftpInit_channel,
"subsystem",
sizeof("subsystem") - 1, "sftp",
strlen("sftp"));
rc = _libssh2_channel_process_startup(session->sftpInit_channel,
"subsystem",
sizeof("subsystem") - 1, "sftp",
strlen("sftp"));
if (rc == PACKET_EAGAIN) {
libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
"Would block to request SFTP subsystem", 0);
@@ -640,8 +640,8 @@ static LIBSSH2_SFTP *sftp_init(LIBSSH2_SESSION *session)
}
if (session->sftpInit_state == libssh2_NB_state_sent2) {
rc = libssh2_channel_write_ex(session->sftpInit_channel, 0,
(char *) session->sftpInit_buffer, 9);
rc = _libssh2_channel_write(session->sftpInit_channel, 0,
(char *) session->sftpInit_buffer, 9);
if (rc == PACKET_EAGAIN) {
libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
"Would block sending SSH_FXP_INIT", 0);
@@ -879,8 +879,8 @@ sftp_open(LIBSSH2_SFTP *sftp, const char *filename,
}
if (sftp->open_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0, (char *) sftp->open_packet,
sftp->open_packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) sftp->open_packet,
sftp->open_packet_len);
if (rc == PACKET_EAGAIN) {
libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
"Would block sending FXP_OPEN or FXP_OPENDIR command",
@@ -1094,9 +1094,8 @@ static ssize_t sftp_read(LIBSSH2_SFTP_HANDLE * handle, char *buffer,
}
if (sftp->read_state == libssh2_NB_state_created) {
retcode =
libssh2_channel_write_ex(channel, 0, (char *) packet,
packet_len);
retcode = _libssh2_channel_write(channel, 0, (char *) packet,
packet_len);
if (retcode == PACKET_EAGAIN) {
sftp->read_packet = packet;
sftp->read_request_id = request_id;
@@ -1298,11 +1297,9 @@ static int sftp_readdir(LIBSSH2_SFTP_HANDLE *handle, char *buffer,
if (sftp->readdir_state == libssh2_NB_state_created) {
_libssh2_debug(session, LIBSSH2_DBG_SFTP,
"Reading entries from directory handle");
retcode =
libssh2_channel_write_ex(channel, 0,
(char *) sftp->readdir_packet,
packet_len);
retcode = _libssh2_channel_write(channel, 0,
(char *) sftp->readdir_packet,
packet_len);
if (retcode == PACKET_EAGAIN) {
return PACKET_EAGAIN;
}
@@ -1459,9 +1456,8 @@ static ssize_t sftp_write(LIBSSH2_SFTP_HANDLE * handle, const char *buffer,
}
if (sftp->write_state == libssh2_NB_state_created) {
rc =
libssh2_channel_write_ex(channel, 0, (char *) sftp->write_packet,
packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) sftp->write_packet,
packet_len);
if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN;
}
@@ -1568,8 +1564,8 @@ static int sftp_fstat(LIBSSH2_SFTP_HANDLE *handle,
}
if (sftp->fstat_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0, (char *) sftp->fstat_packet,
packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) sftp->fstat_packet,
packet_len);
if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN;
} else if (packet_len != rc) {
@@ -1711,9 +1707,8 @@ sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle)
}
if (handle->close_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0,
(char *) handle->close_packet,
packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) handle->close_packet,
packet_len);
if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN;
} else if (packet_len != rc) {
@@ -1828,8 +1823,8 @@ static int sftp_unlink(LIBSSH2_SFTP *sftp, const char *filename,
}
if (sftp->unlink_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0, (char *) sftp->unlink_packet,
packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) sftp->unlink_packet,
packet_len);
if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN;
} else if (packet_len != rc) {
@@ -1950,8 +1945,8 @@ static int sftp_rename(LIBSSH2_SFTP *sftp, const char *source_filename,
}
if (sftp->rename_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0, (char *) sftp->rename_packet,
sftp->rename_s - sftp->rename_packet);
rc = _libssh2_channel_write(channel, 0, (char *) sftp->rename_packet,
sftp->rename_s - sftp->rename_packet);
if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN;
} else if (packet_len != rc) {
@@ -2081,7 +2076,7 @@ static int sftp_mkdir(LIBSSH2_SFTP *sftp, const char *path,
}
if (sftp->mkdir_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0, (char *) packet, packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) packet, packet_len);
if (rc == PACKET_EAGAIN) {
sftp->mkdir_packet = packet;
return PACKET_EAGAIN;
@@ -2179,8 +2174,8 @@ static int sftp_rmdir(LIBSSH2_SFTP *sftp, const char *path,
}
if (sftp->rmdir_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0, (char *) sftp->rmdir_packet,
packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) sftp->rmdir_packet,
packet_len);
if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN;
} else if (packet_len != rc) {
@@ -2298,8 +2293,8 @@ static int sftp_stat(LIBSSH2_SFTP *sftp, const char *path,
}
if (sftp->stat_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0, (char *) sftp->stat_packet,
packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) sftp->stat_packet,
packet_len);
if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN;
} else if (packet_len != rc) {
@@ -2438,9 +2433,8 @@ static int sftp_symlink(LIBSSH2_SFTP *sftp, const char *path,
}
if (sftp->symlink_state == libssh2_NB_state_created) {
rc = libssh2_channel_write_ex(channel, 0,
(char *) sftp->symlink_packet,
packet_len);
rc = _libssh2_channel_write(channel, 0, (char *) sftp->symlink_packet,
packet_len);
if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN;
} else if (packet_len != rc) {