Nothing used libssh2_sftp_packet_read's flush argument anymore so I removed

it and simplified the code somewhat thanks to that. I then renamed the function
to sftp_packet_read() only since it is private in this file anyway.
This commit is contained in:
Daniel Stenberg 2008-12-16 12:31:58 +00:00
parent bcad67636b
commit f1dae83d5e

View File

@ -120,11 +120,11 @@ libssh2_sftp_packet_add(LIBSSH2_SFTP * sftp, unsigned char *data,
/* }}} */ /* }}} */
/* {{{ libssh2_sftp_packet_read /* {{{ sftp_packet_read
* Frame an SFTP packet off the channel * Frame an SFTP packet off the channel
*/ */
static int static int
libssh2_sftp_packet_read(LIBSSH2_SFTP * sftp, int flush) sftp_packet_read(LIBSSH2_SFTP * sftp)
{ {
LIBSSH2_CHANNEL *channel = sftp->channel; LIBSSH2_CHANNEL *channel = sftp->channel;
LIBSSH2_SESSION *session = channel->session; LIBSSH2_SESSION *session = channel->session;
@ -136,11 +136,6 @@ libssh2_sftp_packet_read(LIBSSH2_SFTP * sftp, int flush)
_libssh2_debug(session, LIBSSH2_DBG_SFTP, "Waiting for packet"); _libssh2_debug(session, LIBSSH2_DBG_SFTP, "Waiting for packet");
if (flush && sftp->partial_packet) {
/* When flushing, remove previous partial */
LIBSSH2_FREE(session, sftp->partial_packet);
sftp->partial_packet = NULL;
}
/* If there was a previous partial, start using it */ /* If there was a previous partial, start using it */
if (sftp->partial_packet) { if (sftp->partial_packet) {
@ -148,16 +143,10 @@ libssh2_sftp_packet_read(LIBSSH2_SFTP * sftp, int flush)
packet_len = sftp->partial_len; packet_len = sftp->partial_len;
packet_received = sftp->partial_received; packet_received = sftp->partial_received;
sftp->partial_packet = NULL; sftp->partial_packet = NULL;
} else { }
if (flush && session->socket_block && !libssh2_waitsocket(session, 0)) { else {
/* While flushing in blocking mode, check before reading */
return -1;
}
rc = libssh2_channel_read_ex(channel, 0, (char *) buffer, 4); rc = libssh2_channel_read_ex(channel, 0, (char *) buffer, 4);
if (flush && (rc < 0)) { if (rc == PACKET_EAGAIN) {
/* When flushing, exit quickly */
return -1;
} else if (rc == PACKET_EAGAIN) {
return PACKET_EAGAIN; return PACKET_EAGAIN;
} else if (4 != rc) { } else if (4 != rc) {
libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
@ -191,14 +180,7 @@ libssh2_sftp_packet_read(LIBSSH2_SFTP * sftp, int flush)
(char *) packet + packet_received, (char *) packet + packet_received,
packet_len - packet_received); packet_len - packet_received);
if (flush && (bytes_received < 0)) { if (bytes_received == PACKET_EAGAIN) {
if (packet) {
/* When flushing, remove packet if existing */
LIBSSH2_FREE(session, packet);
}
/* When flushing, exit quickly */
return -1;
} else if (bytes_received == PACKET_EAGAIN) {
/* /*
* We received EAGAIN, save what we have and * We received EAGAIN, save what we have and
* return to EAGAIN to the caller * return to EAGAIN to the caller
@ -209,7 +191,8 @@ libssh2_sftp_packet_read(LIBSSH2_SFTP * sftp, int flush)
packet = NULL; packet = NULL;
return PACKET_EAGAIN; return PACKET_EAGAIN;
} else if (bytes_received < 0) { }
else if (bytes_received < 0) {
libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
"Receive error waiting for SFTP packet", 0); "Receive error waiting for SFTP packet", 0);
LIBSSH2_FREE(session, packet); LIBSSH2_FREE(session, packet);
@ -244,7 +227,7 @@ libssh2_sftp_packet_ask(LIBSSH2_SFTP * sftp, unsigned char packet_type,
_libssh2_debug(session, LIBSSH2_DBG_SFTP, "Asking for %d packet", _libssh2_debug(session, LIBSSH2_DBG_SFTP, "Asking for %d packet",
(int) packet_type); (int) packet_type);
if (poll_channel) { if (poll_channel) {
int ret = libssh2_sftp_packet_read(sftp, 0); int ret = sftp_packet_read(sftp);
if (ret == PACKET_EAGAIN) { if (ret == PACKET_EAGAIN) {
return PACKET_EAGAIN; return PACKET_EAGAIN;
} else if (ret < 0) { } else if (ret < 0) {
@ -309,7 +292,7 @@ libssh2_sftp_packet_require(LIBSSH2_SFTP * sftp, unsigned char packet_type,
} }
while (session->socket_state == LIBSSH2_SOCKET_CONNECTED) { while (session->socket_state == LIBSSH2_SOCKET_CONNECTED) {
ret = libssh2_sftp_packet_read(sftp, 0); ret = sftp_packet_read(sftp);
if (ret == PACKET_EAGAIN) { if (ret == PACKET_EAGAIN) {
return PACKET_EAGAIN; return PACKET_EAGAIN;
} else if (ret <= 0) { } else if (ret <= 0) {
@ -359,7 +342,7 @@ sftp_packet_requirev(LIBSSH2_SFTP * sftp, int num_valid_responses,
} }
} }
ret = libssh2_sftp_packet_read(sftp, 0); ret = sftp_packet_read(sftp);
if ((ret < 0) && (ret != PACKET_EAGAIN)) { if ((ret < 0) && (ret != PACKET_EAGAIN)) {
sftp->requirev_start = 0; sftp->requirev_start = 0;
return -1; return -1;
@ -525,7 +508,7 @@ LIBSSH2_CHANNEL_CLOSE_FUNC(libssh2_sftp_dtor)
libssh2_sftp_close_handle(sftp->handles); libssh2_sftp_close_handle(sftp->handles);
} }
/* Free the partial packet storage for libssh2_sftp_packet_read */ /* Free the partial packet storage for sftp_packet_read */
if (sftp->partial_packet) { if (sftp->partial_packet) {
LIBSSH2_FREE(session, sftp->partial_packet); LIBSSH2_FREE(session, sftp->partial_packet);
} }