* Two small test fixes
* Ignore exceptions when comitting an empty transaction
* Attempt to fix FTP connection issue
* Unified test by having a single download function.
Added DNS probing call to attempt fixing sporadic DNS errors.
* Fixed argument order
* Avoid creating temp file during tests, if not needed
* Primary functionality implemented for CIFS
This will add CIFS support to Duplicati.
One of the advantages is that the resource does not need to be mounted as the backend connects and authenticates directly to the resource via TCP/or Netbios over TCP.
The authentication supported is domain/username/password. At present integrated Windows authentication is not supported.
This implementation relies on SMBLibrary library (https://github.com/TalAloni/SMBLibrary).
* Fixes to XML documentation
* Implementing single CIFS connection + Fix on PutAsync
Single CIFS connection to avoid re-authentication on every operation.
Fix to PutAsync which only because apparent after file sizes were larger than _smb2Client.MaxWriteSize
* Adding CI tests for CIFS
The CI test for CIFS is self contained, requiring no environment variables. Also updated README.
* Added options to insert delays in backend tester
* Added wait delays to Azure and GoogleDrive to see it the CI is more stable with small delays
* Added more debug output to the backend tester
* Fixed dropbox reporting OAuth quota errors, when it is likely Dropbox API quota errors
* Implemented exception detection on AzureBlob backend
* Also showing sleep times in output
* Fixed a bug with the dropbox quota response
* Fixed error message to report correct number of files
* Fixed suppressed warning
# pCloud Backend Tester Behavior Investigation
## Overview
This is a draft PR investigating inconsistent behavior between normal Duplicati operation and the BackendTester tool when using the pCloud backend. GitHub Actions changes are intentionally excluded pending resolution of these issues.
## Current Behavior
1. **Normal Operation:**
- Backups with pCloud on Duplicati work successfully
- No warnings or errors are reported
2. **BackendTester Issues:**
When `--disable-streaming-transfers` is **not** present, the following issues occur:
- Upload failures with `NotSupportedException`
- Files appear missing after successful upload
- Download verification failures
- Deletion errors for uploaded files
## Technical Details
### Upload Errors
```
Uploading file 0, 1,187 KB ... Failed to upload file 0
Error message: System.NotSupportedException: Specified method is not supported.
at Duplicati.CommandLine.BackendTester.NonSeekableStream.set_Position(Int64 value) in /_/Duplicati/CommandLine/BackendTester/NonSeekableStream.cs:line 50
at Duplicati.Library.Backend.pCloudBackend.PutAsync(String remotename, Stream input, CancellationToken cancellationToken) in /_/Duplicati/Library/Backend/pCloud/pCloudBackend.cs:line 253
at Duplicati.Library.Utility.Utility.Await(Task task) in /_/Duplicati/Library/Utility/Utility.cs:line 1478
at Duplicati.CommandLine.BackendTester.Program.Uploadfile(String localfilename, Int32 i, String remotefilename, IBackend backend, Boolean disableStreaming, Int64 throttle)
in /_/Duplicati/CommandLine/BackendTester/Program.cs:line 522, remote name: OxHqszSAo69UcPCPLdyJCXm
```
### Verification and File List Errors
```
Verifying file list ...
*** File with name OxHqszSAo69UcPCPLdyJCXm was uploaded but not found afterwards
*** File with name g7PSb3WOAHkKMZ-V2baVpBxLFR4MYMZRzDo- was uploaded but not found afterwards
```
### Download Errors
```
Downloading file 16 ... failed
*** Error: Duplicati.Library.Interface.FileMissingException: File not found.
at Duplicati.Library.Backend.pCloudBackend.GetFileId(String filename) in /`/Duplicati/Library/Backend/pCloud/pCloudBackend.cs:line 317
at Duplicati.Library.Backend.pCloudBackend.GetAsync(String remotename, Stream output, CancellationToken cancellationToken) in /_/Duplicati/Library/Backend/pCloud/pCloudBackend.cs:line 345
at Duplicati.Library.Utility.Utility.Await(Task task) in /_/Duplicati/Library/Utility/Utility.cs:line 1478
at Duplicati.CommandLine.BackendTester.Program.Run(List`1 args, Dictionary`2 options, Boolean first) in /_/Duplicati/CommandLine/BackendTester/Program.cs:line 372
Checking hash ... failed
*** Downloaded file was corrupt
```
### Deletion Errors
```
Deleting files...
*** Failed to delete file OxHqszSAo69UcPCPLdyJCXm, message: Duplicati.Library.Interface.FileMissingException: The requested file does not exist
at Duplicati.Library.Backend.pCloudBackend.DeleteAsync(String remotename, CancellationToken cancellationToken) in /_/Duplicati/Library/Backend/pCloud/pCloudBackend.cs:line 402
at Duplicati.CommandLine.BackendTester.Program.Run(List`1 args, Dictionary`2 options, Boolean first) in /_/Duplicati/CommandLine/BackendTester/Program.cs:line 407
*** Failed to delete file g7PSb3WOAHkKMZ-V2baVpBxLFR4MYMZRzDo-, message: Duplicati.Library.Interface.FileMissingException: The requested file does not exist
```
## Questions
1. Is it expected that BackendTester exits with return code 0 despite these errors?
2. Could this indicate an issue with either:
- The BackendTester tool implementation
- The pCloud backend implementation
- The interaction between these components
## Additional Context
- These issues only appear in BackendTester scenarios
- Regular Duplicati operations with pCloud remain unaffected
- All errors appear related to file streaming/seeking behavior
Would appreciate insights on whether this is expected behavior or indicates a deeper issue that needs addressing.