diff --git a/src/kex.c b/src/kex.c index cc871e7..99a4a94 100644 --- a/src/kex.c +++ b/src/kex.c @@ -4069,7 +4069,7 @@ LIBSSH2_API int libssh2_session_supported_algs(LIBSSH2_SESSION* session, supported algorithms (needed to allocate the proper size of array) and the second time to actually copy the pointers. Typically this function will not be called often (typically at the beginning of a session) and - the number of algorithms (i.e. niumber of iterations in one loop) will + the number of algorithms (i.e. number of iterations in one loop) will not be high (typically it will not exceed 20) for quite a long time. So double looping really shouldn't be an issue and it is definitely a diff --git a/src/session.c b/src/session.c index 256eb99..212560b 100644 --- a/src/session.c +++ b/src/session.c @@ -219,7 +219,7 @@ banner_send(LIBSSH2_SESSION * session) } else { memcpy(banner_dup, banner, 255); - banner[255] = '\0'; + banner_dup[255] = '\0'; } _libssh2_debug(session, LIBSSH2_TRACE_TRANS, "Sending Banner: %s", diff --git a/src/sftp.c b/src/sftp.c index 378974c..ac7ee01 100644 --- a/src/sftp.c +++ b/src/sftp.c @@ -1414,9 +1414,12 @@ static ssize_t sftp_read(LIBSSH2_SFTP_HANDLE * handle, char *buffer, /* Number of bytes asked for that haven't been acked yet */ size_t already = (size_t)(filep->offset_sent - filep->offset); - size_t max_read_ahead = buffer_size; + size_t max_read_ahead = buffer_size*4; unsigned long recv_window; + if(max_read_ahead > LIBSSH2_CHANNEL_WINDOW_DEFAULT*4) + max_read_ahead = LIBSSH2_CHANNEL_WINDOW_DEFAULT*4; + /* if the buffer_size passed in now is smaller than what has already been sent, we risk getting count become a very large number */ @@ -1469,8 +1472,8 @@ static ssize_t sftp_read(LIBSSH2_SFTP_HANDLE * handle, char *buffer, uint32_t request_id; uint32_t size = count; - //if(size < buffer_size) - // size = buffer_size; + if(size < buffer_size) + size = buffer_size; if(size > MAX_SFTP_READ_SIZE) size = MAX_SFTP_READ_SIZE; @@ -1573,7 +1576,7 @@ static ssize_t sftp_read(LIBSSH2_SFTP_HANDLE * handle, char *buffer, else { /* we should never reach this point */ return _libssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, - "sftp_read() internal error a"); + "sftp_read() internal error"); } } @@ -1719,7 +1722,7 @@ static ssize_t sftp_read(LIBSSH2_SFTP_HANDLE * handle, char *buffer, /* we should never reach this point */ return _libssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, - "sftp_read() internal error b"); + "sftp_read() internal error"); } /* libssh2_sftp_read diff --git a/src/transport.c b/src/transport.c index dbee285..0723b77 100644 --- a/src/transport.c +++ b/src/transport.c @@ -376,8 +376,6 @@ int _libssh2_transport_read(LIBSSH2_SESSION * session) if((nread < 0) && (nread == -EAGAIN)) { session->socket_block_directions |= LIBSSH2_SESSION_BLOCK_INBOUND; - _libssh2_debug(session, LIBSSH2_TRACE_SOCKET, - "setting INBOUND flag, nread: %d", nread); return LIBSSH2_ERROR_EAGAIN; } _libssh2_debug(session, LIBSSH2_TRACE_SOCKET, @@ -413,8 +411,6 @@ int _libssh2_transport_read(LIBSSH2_SESSION * session) check is only done for the initial block since once we have got the start of a block we can in fact deal with fractions */ - _libssh2_debug(session, LIBSSH2_TRACE_SOCKET, - "setting INBOUND flag, numbytes: %d, blocksize: %d", numbytes, blocksize); session->socket_block_directions |= LIBSSH2_SESSION_BLOCK_INBOUND; return LIBSSH2_ERROR_EAGAIN;