Bug 418472 - Duplicating files on remote connections results in the copy having ".part" in the name
Summary: Duplicating files on remote connections results in the copy having ".part" in...
Status: RESOLVED DUPLICATE of bug 419999
Alias: None
Product: kio-extras
Classification: Frameworks and Libraries
Component: SFTP (show other bugs)
Version: 19.12
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-04 14:34 UTC by Alexander Ewering
Modified: 2020-04-29 21:05 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Output of sftp -vv (7.69 KB, text/plain)
2020-04-14 20:20 UTC, Alexander Ewering
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Ewering 2020-03-04 14:34:18 UTC
SUMMARY

Copying and pasting a file in place on a SFTP connection results in the copy's name ending in ".part".

STEPS TO REPRODUCE
1. Create a remote connection in Dolphin (ssh, SFTP)
2. Select a single file (for example, "file.css"), and copy & paste it (CTRL-C CTRL-V)
3. Enter a new name when the dialog appears, for example "file2.css"
4. The copied file has the name "file2.css.part".

OBSERVED RESULT


EXPECTED RESULT


SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version: 
KDE Frameworks Version: 
Qt Version: 

ADDITIONAL INFORMATION
Comment 1 Harald Sitter 2020-03-05 11:39:15 UTC
Cannot reproduce.

Please run dolphin the following way and replicate your issue:

KDE_FORK_SLAVES=1 QT_LOGGING_RULES="*=false;kf5.kio.core.copyjob=true;log_kio_sftp=true;log_kio_sftp=true" dolphin --new-window

This will generate a whole lot of debug output. Please attach it to the bug report.
Comment 2 Alexander Ewering 2020-03-05 14:35:05 UTC
(In reply to Harald Sitter from comment #1)
> Cannot reproduce.
> 
> Please run dolphin the following way and replicate your issue:
> 
> KDE_FORK_SLAVES=1
> QT_LOGGING_RULES="*=false;kf5.kio.core.copyjob=true;log_kio_sftp=true;
> log_kio_sftp=true" dolphin --new-window
> 
> This will generate a whole lot of debug output. Please attach it to the bug
> report.

OK, done. The error was different this time though; the file didn't get copied at all (no new file appeared and no error message either).

intrr@cara:~$ KDE_FORK_SLAVES=1 QT_LOGGING_RULES="*=false;kf5.kio.core.copyjob=true;log_kio_sftp=true;log_kio_sftp=true" dolphin --new-window
log_kio_sftp: *** Starting kio_sftp 
log_kio_sftp: *** Starting kio_sftp 
log_kio_sftp: pid =  12038
log_kio_sftp: debug =  
log_kio_sftp: pid =  12036
log_kio_sftp: debug =  
log_kio_sftp: "flueggew" @ "srv1.allaboutmedia.de" : 22
log_kio_sftp: 
log_kio_sftp: list directory:  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: "flueggew" @ "srv1.allaboutmedia.de" : 22
log_kio_sftp: 
log_kio_sftp: file system free space of QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: checking cache: info.username = "flueggew" , info.url = "sftp://flueggew@srv1.allaboutmedia.de"
log_kio_sftp: checking cache: info.username = "flueggew" , info.url = "sftp://flueggew@srv1.allaboutmedia.de"
log_kio_sftp: Creating the SSH session and setting options
log_kio_sftp: Trying to connect to the SSH server
log_kio_sftp: username= "flueggew" , host= "srv1.allaboutmedia.de" , port= 22
log_kio_sftp: Creating the SSH session and setting options
log_kio_sftp: Trying to connect to the SSH server
log_kio_sftp: username= "flueggew" , host= "srv1.allaboutmedia.de" , port= 22
log_kio_sftp: Getting the SSH server hash
log_kio_sftp: Checking if the SSH server is known
log_kio_sftp: Trying to authenticate with the server
log_kio_sftp: Getting the SSH server hash
log_kio_sftp: Checking if the SSH server is known
log_kio_sftp: Trying to authenticate with the server
log_kio_sftp: Trying to authenticate with public key
log_kio_sftp: Trying to authenticate with password
log_kio_sftp: Trying to authenticate with public key
log_kio_sftp: Trying to authenticate with password
log_kio_sftp: Trying to request the sftp session
log_kio_sftp: Trying to request the sftp session
log_kio_sftp: Trying to initialize the sftp session
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: Trying to initialize the sftp session
log_kio_sftp: readdir:  "/public_html" , details:  "2"
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: url =  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")  - err= 2
log_kio_sftp: file system free space of QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: file system free space of QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: url =  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")  - err= 2
log_kio_sftp: url =  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")  - err= 2
kf5.kio.core.copyjob: (QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")) QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
kf5.kio.core.copyjob: CopyJob: stating the dest QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
kf5.kio.core.copyjob: d->state= 1
kf5.kio.core.copyjob: 
kf5.kio.core.copyjob: dest is dir: true
kf5.kio.core.copyjob: fast path! found info about QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") in KCoreDirLister
kf5.kio.core.copyjob: fileName= "rpc.php" url= QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
kf5.kio.core.copyjob: uSource= QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") uDest(1)= QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
kf5.kio.core.copyjob:  adding destFileName= "rpc.php"
kf5.kio.core.copyjob:  uDest(2)= QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
kf5.kio.core.copyjob:   QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") -> QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
kf5.kio.core.copyjob: Source is a file (or a symlink), or we are linking -> no recursive listing
kf5.kio.core.copyjob: Setting m_dest to QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
kf5.kio.core.copyjob: Stating finished. To copy: 445 , available: 18446744073709551615
kf5.kio.core.copyjob: 
kf5.kio.core.copyjob: preparing to copy QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") 445 18446744073709551615
kf5.kio.core.copyjob: copying "/public_html/rpc.php"
kf5.kio.core.copyjob: Copying QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") to QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")  ->  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")  , permissions =  "493" , overwrite =  QFlags() , resume =  QFlags()
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") , permissions = 493 , overwrite = QFlags() , resume = QFlags()
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") , permissions = 493 , overwrite = QFlags() , resume = QFlags()
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
kf5.kio.core.copyjob: d->state= 6
kf5.kio.core.copyjob: KIO::stat for resolving conflict on QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
kf5.kio.core.copyjob: d->state= 7
kf5.kio.core.copyjob: 
kf5.kio.core.copyjob: preparing to copy QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") 445 18446744073709551615
kf5.kio.core.copyjob: copying "/public_html/rpc2.php"
kf5.kio.core.copyjob: Copying QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php") to QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc2.php")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")  ->  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc2.php")  , permissions =  "493" , overwrite =  QFlags() , resume =  QFlags()
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc2.php") , permissions = 493 , overwrite = QFlags() , resume = QFlags()
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc2.php")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc2.php") , permissions = 493 , overwrite = QFlags() , resume = QFlags()
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/rpc.php")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
kf5.kio.core.copyjob: 445
log_kio_sftp: Appending .part extension to "/public_html/rpc2.php"
kf5.kio.core.copyjob: emit processedSize 445
log_kio_sftp: Trying to open: "/public_html/rpc2.php.part" , mode= "493"
log_kio_sftp: Error during 'put'. Aborting.
kf5.kio.core.copyjob: d->state= 6
kf5.kio.core.copyjob: 0 files remaining
kf5.kio.core.copyjob: 
kf5.kio.core.copyjob: copyNextFile finished
kf5.kio.core.copyjob: KDirNotify'ing FilesAdded QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: list directory:  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: readdir:  "/public_html" , details:  "2"
log_kio_sftp: special(): polling
log_kio_sftp: special(): polling
Comment 3 Alexander Ewering 2020-03-05 14:37:04 UTC
(In reply to Harald Sitter from comment #1)
> Cannot reproduce.
> 
> Please run dolphin the following way and replicate your issue:
> 
> KDE_FORK_SLAVES=1
> QT_LOGGING_RULES="*=false;kf5.kio.core.copyjob=true;log_kio_sftp=true;
> log_kio_sftp=true" dolphin --new-window
> 
> This will generate a whole lot of debug output. Please attach it to the bug
> report.

OK, the "no copy exists at all" thing seems to happen only if you're in the ROOT folder (that you also specified when creating the network connection). The ".part" thing seems to happen when you've navigated to a further sub-folder:

intrr@cara:~$ KDE_FORK_SLAVES=1 QT_LOGGING_RULES="*=false;kf5.kio.core.copyjob=true;log_kio_sftp=true;log_kio_sftp=true" dolphin --new-window
log_kio_sftp: *** Starting kio_sftp 
log_kio_sftp: pid =  12158
log_kio_sftp: debug =  
log_kio_sftp: "flueggew" @ "srv1.allaboutmedia.de" : 22
log_kio_sftp: 
log_kio_sftp: list directory:  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: checking cache: info.username = "flueggew" , info.url = "sftp://flueggew@srv1.allaboutmedia.de"
log_kio_sftp: *** Starting kio_sftp 
log_kio_sftp: pid =  12160
log_kio_sftp: debug =  
log_kio_sftp: "flueggew" @ "srv1.allaboutmedia.de" : 22
log_kio_sftp: 
log_kio_sftp: file system free space of QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: checking cache: info.username = "flueggew" , info.url = "sftp://flueggew@srv1.allaboutmedia.de"
log_kio_sftp: Creating the SSH session and setting options
log_kio_sftp: Trying to connect to the SSH server
log_kio_sftp: username= "flueggew" , host= "srv1.allaboutmedia.de" , port= 22
log_kio_sftp: Creating the SSH session and setting options
log_kio_sftp: Trying to connect to the SSH server
log_kio_sftp: username= "flueggew" , host= "srv1.allaboutmedia.de" , port= 22
log_kio_sftp: Getting the SSH server hash
log_kio_sftp: Checking if the SSH server is known
log_kio_sftp: Trying to authenticate with the server
log_kio_sftp: Trying to authenticate with public key
log_kio_sftp: Trying to authenticate with password
log_kio_sftp: Trying to request the sftp session
log_kio_sftp: Trying to initialize the sftp session
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: readdir:  "/public_html" , details:  "2"
log_kio_sftp: file system free space of QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: *** Starting kio_sftp 
log_kio_sftp: pid =  12164
log_kio_sftp: debug =  
log_kio_sftp: "flueggew" @ "srv1.allaboutmedia.de" : 22
log_kio_sftp: 
log_kio_sftp: file system free space of QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")
log_kio_sftp: checking cache: info.username = "flueggew" , info.url = "sftp://flueggew@srv1.allaboutmedia.de"
log_kio_sftp: Creating the SSH session and setting options
log_kio_sftp: Trying to connect to the SSH server
log_kio_sftp: username= "flueggew" , host= "srv1.allaboutmedia.de" , port= 22
log_kio_sftp: url =  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")  - err= 2
log_kio_sftp: Getting the SSH server hash
log_kio_sftp: Checking if the SSH server is known
log_kio_sftp: Trying to authenticate with the server
log_kio_sftp: Getting the SSH server hash
log_kio_sftp: Checking if the SSH server is known
log_kio_sftp: Trying to authenticate with the server
log_kio_sftp: Trying to authenticate with public key
log_kio_sftp: Trying to authenticate with password
log_kio_sftp: Trying to request the sftp session
log_kio_sftp: Trying to authenticate with public key
log_kio_sftp: Trying to authenticate with password
log_kio_sftp: Trying to request the sftp session
log_kio_sftp: Trying to initialize the sftp session
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: Trying to initialize the sftp session
log_kio_sftp: url =  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")  - err= 2
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: url =  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html")  - err= 2
log_kio_sftp: list directory:  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: file system free space of QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: readdir:  "/public_html/css" , details:  "2"
log_kio_sftp: url =  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")  - err= 2
kf5.kio.core.copyjob: (QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")) QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
kf5.kio.core.copyjob: CopyJob: stating the dest QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
kf5.kio.core.copyjob: d->state= 1
kf5.kio.core.copyjob: 
kf5.kio.core.copyjob: dest is dir: true
kf5.kio.core.copyjob: fast path! found info about QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") in KCoreDirLister
kf5.kio.core.copyjob: fileName= "site.css" url= QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
kf5.kio.core.copyjob: uSource= QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") uDest(1)= QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
kf5.kio.core.copyjob:  adding destFileName= "site.css"
kf5.kio.core.copyjob:  uDest(2)= QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
kf5.kio.core.copyjob:   QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") -> QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
kf5.kio.core.copyjob: Source is a file (or a symlink), or we are linking -> no recursive listing
kf5.kio.core.copyjob: Setting m_dest to QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
kf5.kio.core.copyjob: Stating finished. To copy: 8355 , available: 18446744073709551615
kf5.kio.core.copyjob: 
kf5.kio.core.copyjob: preparing to copy QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") 8355 18446744073709551615
kf5.kio.core.copyjob: copying "/public_html/css/site.css"
kf5.kio.core.copyjob: Copying QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") to QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")  ->  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")  , permissions =  "493" , overwrite =  QFlags() , resume =  QFlags()
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") , permissions = 493 , overwrite = QFlags() , resume = QFlags()
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") , permissions = 493 , overwrite = QFlags() , resume = QFlags()
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
kf5.kio.core.copyjob: d->state= 6
kf5.kio.core.copyjob: KIO::stat for resolving conflict on QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
kf5.kio.core.copyjob: d->state= 7
kf5.kio.core.copyjob: 
kf5.kio.core.copyjob: preparing to copy QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") 8355 18446744073709551615
kf5.kio.core.copyjob: copying "/public_html/css/site2.css"
kf5.kio.core.copyjob: Copying QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css") to QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site2.css")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")  ->  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site2.css")  , permissions =  "493" , overwrite =  QFlags() , resume =  QFlags()
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site2.css") , permissions = 493 , overwrite = QFlags() , resume = QFlags()
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site2.css")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site2.css") , permissions = 493 , overwrite = QFlags() , resume = QFlags()
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
log_kio_sftp: QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css/site.css")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
kf5.kio.core.copyjob: 8355
log_kio_sftp: Appending .part extension to "/public_html/css/site2.css"
kf5.kio.core.copyjob: emit processedSize 8355
log_kio_sftp: Trying to open: "/public_html/css/site2.css.part" , mode= "493"
log_kio_sftp: Error during 'put'. Aborting.
kf5.kio.core.copyjob: d->state= 6
kf5.kio.core.copyjob: 0 files remaining
kf5.kio.core.copyjob: 
kf5.kio.core.copyjob: copyNextFile finished
kf5.kio.core.copyjob: KDirNotify'ing FilesAdded QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
log_kio_sftp: list directory:  QUrl("sftp://flueggew@srv1.allaboutmedia.de:22/public_html/css")
log_kio_sftp: connected ? true username: old= "flueggew" new= "flueggew"
log_kio_sftp: readdir:  "/public_html/css" , details:  "2"
Comment 4 Bug Janitor Service 2020-03-20 04:33:13 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 5 Alexander Ewering 2020-03-20 12:18:20 UTC
I have provided the requested info, so I guess this should be changed to "CONFIRMED".
Comment 6 Alexander Ewering 2020-03-20 12:20:47 UTC
Sorry, "REPORTED" would be correct I suppose.
Comment 7 Harald Sitter 2020-03-20 13:03:09 UTC
This looks suspiciously like a server-side problem that we can't do anything about. 
If I give you a diff can you build kio-extras yourself to get some more debug output? This is either a problem with libssh or the server, but it's hard to say which without some more context on the error.

Is this still a problem if you disable the .part files? (run `kcmshell5 netpref` and uncheck 'mark partial files')

in Comment #3 we see it successfully opening the file on the server and writing the first (and only) 8355 bytes. It'd then continue to write 0 bytes and that results in a zero byte write which would then conclude the upload. Except, instead of coming back with 0 bytes the second write raises an error which leaves you with the dangling .part file.
We aren't doing anything crazy there, so I am rather thinking the server considers 0 byte writes a problem, which is stupid and wrong.
Comment 8 Alexander Ewering 2020-03-20 19:28:23 UTC
(In reply to Harald Sitter from comment #7)
> This looks suspiciously like a server-side problem that we can't do anything
> about. 
> If I give you a diff can you build kio-extras yourself to get some more
> debug output? This is either a problem with libssh or the server, but it's
> hard to say which without some more context on the error.
> 
> Is this still a problem if you disable the .part files? (run `kcmshell5
> netpref` and uncheck 'mark partial files')
> 
> in Comment #3 we see it successfully opening the file on the server and
> writing the first (and only) 8355 bytes. It'd then continue to write 0 bytes
> and that results in a zero byte write which would then conclude the upload.
> Except, instead of coming back with 0 bytes the second write raises an error
> which leaves you with the dangling .part file.
> We aren't doing anything crazy there, so I am rather thinking the server
> considers 0 byte writes a problem, which is stupid and wrong.

OK, turning off "Mark partial files" fixed it indeed.

However, I'm not sure you're not doing anything crazy ;) Why would you "write 0 bytes"? That doesn't make any sense to me. If I designed an FTP server, it would indeed error on such a request!

The FTP server used here also isn't in any way "special" -- it's as mainstream as it gets: One of the biggest German mass hosters (Hetzner KonsoleH)...

Thanks anyway for your time! (sorry I don't have a proper development environment set up so I think building parts of KDE would be a major problem).
Comment 9 Bug Janitor Service 2020-04-04 04:33:10 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 10 Christoph Feck 2020-04-14 14:10:41 UTC
New information was provided with comment 8; changing status for inspection.
Comment 11 Harald Sitter 2020-04-14 14:33:34 UTC
Zero size writes write zero bytes, so the server ought to say "I've written zero bytes". Does it make sense? Not particularly, but the server can't just make up its own protocol because it feels like it.

please attach the output of
sftp -vv flueggew@srv1.allaboutmedia.de
Comment 12 Harald Sitter 2020-04-14 14:55:05 UTC
Git commit 7bb2c797c30b8f4901f5c3939f7360eabcd53074 by Harald Sitter.
Committed on 14/04/2020 at 14:54.
Pushed by sitter into branch 'master'.

sftp: extra verbosity when put fails

for not entirely clear reasons certain servers will fall over after we've
written our data. log internal sftp and ssh errors to aid in debugging

M  +9    -1    sftp/kio_sftp.cpp

https://commits.kde.org/kio-extras/7bb2c797c30b8f4901f5c3939f7360eabcd53074
Comment 13 Alexander Ewering 2020-04-14 20:20:11 UTC
Created attachment 127551 [details]
Output of sftp -vv
Comment 14 Harald Sitter 2020-04-15 13:29:23 UTC
Server-side software is proftdp with mod_sftp but unfortunately it doesn't say what version. I cannot reproduce this problem with mod_sftp/0.9.9 though.
This does rather hint at either some server-side configuration getting in the way or their specific version of proftpd is buggy. You could get in touch with your hoster and see if they can dump us some server-side trace logs.

I've also added some debugging for our upcoming 20.04 release that might help figure out a client-side workaround. Currently I cannot accurately say what exactly is going wrong and also cannot reproduce the problem locally, so I also can't come up with a fix. I'm closing the bug report for now. 
When you get the 20.04 update you can fetch another dolphin log using the same command as before and reopen the bug report with the new data.
Comment 15 Harald Sitter 2020-04-29 12:18:35 UTC

*** This bug has been marked as a duplicate of bug 419999 ***
Comment 16 Alexander Ewering 2020-04-29 21:05:02 UTC
Thanks for the fix, I know it's frustrating having to bloat your own code to hack around bugs in others' code! :)