[ 
https://issues.apache.org/jira/browse/SSHD-1319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17681242#comment-17681242
 ] 

Andreas Bergander commented on SSHD-1319:
-----------------------------------------

I've submitted a PR which adds the missing call to setOffset(position): 
https://github.com/apache/mina-sshd/pull/316

Regarding your comment about the condition for breaking out of the loop, that's 
is exactly why I needed to create an outer loop with an offset in my call to 
transferFrom(...). But maybe it would be a good idea to continue to read if the 
returned value is 0? Or does that break some contract of 
FileChannel.transferFrom(...)? Maybe it should be up to the caller to make sure 
everything has been transferred. Otherwise something like this could help:
{code:java}
if (read > 0) {
    output.write(buffer, 0, read);
    totalRead += read;
} else if (read < 0) {
    break;
}{code}

> SftpRemotePathChannel.transferFrom(...) ignores position argument
> -----------------------------------------------------------------
>
>                 Key: SSHD-1319
>                 URL: https://issues.apache.org/jira/browse/SSHD-1319
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 2.9.2
>            Reporter: Andreas Bergander
>            Priority: Major
>
> The _position_ argument in the _SftpRemotePathChannel.transferFrom(...)_ 
> method seems only to be used when validating it and in debug logging.
> It should also affect where the data is written to the remote file. Perhaps 
> it could be fixed with adding a call to 
> {_}SftpOutputStreamAsync.setOffset(...){_}?
> {code:java}
> output.setOffset(position);{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to