Commit Graph

9481 Commits

Author SHA1 Message Date
Andrew Furman
f9bf6d823e lib/rest: fix URLPathEscapeAll breaking WebDAV servers (eg nzbdav) with strict path matching
URLPathEscapeAll was only passing [A-Za-z0-9/] through unencoded, causing
it to percent-encode RFC 3986 unreserved characters (-, ., _, ~). Per RFC
3986 §2.3, unreserved characters MUST NOT be percent-encoded, and a URI
that unnecessarily encodes them is not equivalent to one that does not.

Servers that perform strict path matching without normalising
percent-encoded characters will reject the over-encoded form with a 404.

Before: /files/my-report.pdf → /files/my%2Dreport%2Epdf
After:  /files/my-report.pdf → /files/my-report.pdf

Reserved characters (spaces, semicolons, colons, etc.) continue to be
encoded as before.
2026-03-23 16:58:04 +00:00
Nick Craig-Wood
14defb23dc list: fix nil pointer panic in Sorter when temp file creation fails
When extsort.Strings() cannot create temporary files (e.g. due to
apparmor restrictions or permission denied), it returns a nil sorter
with the error on errChan. The code then called Sort() on the nil
sorter, causing a panic.

Check for nil sorter and return the error instead of panicking.

Fixes #9244
2026-03-23 16:58:04 +00:00
Nick Craig-Wood
00b47c99a5 docs: update RELEASE procedure to avoid mistakes 2026-03-23 16:58:04 +00:00
Jan-Philipp Reßler
c7f4adb970 docs: added text to the label showing version-introduced info
Co-authored-by: Jan-Philipp Reßler <xodarap@xodarap.de>
2026-03-23 16:58:04 +00:00
Nick Craig-Wood
9468ac3129 Start v1.73.3-DEV development 2026-03-23 16:56:58 +00:00
Nick Craig-Wood
9fce660b4b docs: update sponsors 2026-03-08 11:12:34 +00:00
Nick Craig-Wood
c0f03f8ac0 Version v1.73.2 v1.73.2 2026-03-06 18:45:23 +00:00
Nick Craig-Wood
5f149a91c4 Update to go 1.25.8 to fix multiple CVEs
This fixes the following CVEs

- CVE-2026-27137
- CVE-2026-27138
- CVE-2026-25679
- CVE-2026-27142

This disables the go1.24 build as the updates no longer build on go1.24

Fixes #9220
2026-03-06 14:12:25 +00:00
Nick Craig-Wood
41fb73c669 build: update to golang.org/x/net v0.51.0 to fix CVE-2026-27141 #9220
See: https://pkg.go.dev/vuln/GO-2026-4559
2026-03-06 13:19:22 +00:00
razorloves
4b63e78358 docs: fix new drive flag typo in changelog 2026-03-06 13:19:22 +00:00
Romāns Potašovs
690587ebbf webdav: add missing headers for CORS
fix #7492
2026-03-06 13:19:22 +00:00
Adam Kasztenny
3821c64711 docs: Document unsupported S3 object keys with double slashes
Fixes #5063 by documenting that S3 object keys containing
consecutive forward slashes (//) are not supported by rclone.

The issue occurs because rclone normalizes paths like "a//b" to "a/b",
causing "object not found" errors when trying to access the original
object. This documentation addition explicitly warns users about this
limitation and provides workarounds.

Changes:
- Added new subsection "Important note about double slashes (//)"
  under "Restricted filename characters" in S3 documentation
- Explains the normalization behavior and its consequences
- Provides clear examples and workarounds

AI Model/Tool Attribution:
- Implemented using opencode AI assistant
- Issue analysis and documentation update performed by AI tools

Resolves: #5063
2026-03-06 13:19:22 +00:00
Nick Craig-Wood
dc73dba9b5 docs: note that --use-server-modtime only works on some backends
Closes #6977
2026-03-06 13:19:22 +00:00
jzunigax2
9267568fe3 internxt: fix Entry doesn't belong in directory errors on windows 2026-03-06 13:19:22 +00:00
a1pcm
a285c9eeee drime: fix chunk-uploaded files ignoring workspace ID
When specifying --drime-workspace-id, a file greater than the limit at
which file uploads get chunked would ignore the specified ID and get put
into the default workspace instead.

Completes the fix described in commit 2360e65 by properly closing the
chunkwriter by providing the workspace ID to the Drime API call.
2026-03-06 13:19:22 +00:00
Dark Dragon
cf4d78e3c9 docs: Fix headers hierarchy for mount.md
Similar to "Mounting on macOS", "Mounting on Linux" needs to move one layer down. This also fixes the missing anchor overlay on hover.
2026-03-06 13:19:22 +00:00
Varun Chawla
ea29edb35d webdav: escape reserved characters in URL path segments
Use URLPathEscapeAll instead of URLPathEscape for path encoding.

URLPathEscape relies on Go's url.URL.String() which only minimally
escapes paths - reserved sub-delimiter characters like semicolons and
equals signs pass through unescaped. Per RFC 3986 section 3.3, these
characters must be percent-encoded when used as literal values in
path segments.

Some WebDAV servers (notably dCache/Jetty) interpret unescaped
semicolons as path parameter delimiters, which truncates filenames
at the semicolon position. URLPathEscapeAll encodes everything
except [A-Za-z0-9/], which is safe for all servers.

Fixes #9082
2026-03-06 13:19:22 +00:00
Jan-Philipp Reßler
de93ad8744 bisync: add group Sync to the bisync command
Co-authored-by: Jan-Philipp Reßler <xodarap@xodarap.de>
2026-03-06 13:19:22 +00:00
Varun Chawla
9bfc1a7a8a archive: extract: strip "./" prefix from tar entry paths
Tar files created from the current directory (e.g. tar -czf archive.tar.gz .)
produce entries prefixed with "./". When extracting, rclone's character
encoding replaces the "." with a full-width dot (U+FF0E), creating a
spurious directory instead of merging into the destination root.

Strip the leading "./" from NameInArchive before processing. Only "./"
is stripped specifically to avoid enabling path traversal attacks via
"../".

Fixes #9168
2026-03-06 13:19:22 +00:00
Nick Craig-Wood
d9e455d1d3 docs: add instructions on how to update Go version 2026-03-06 13:19:22 +00:00
Nick Craig-Wood
7502ec934b buid: update github.com/cloudflare/circl to v1.6.3 to fix CVE-2026-1229
Fixes #9227
2026-03-04 11:24:31 +00:00
Nick Craig-Wood
bffc49742c Start v1.73.2-DEV development 2026-02-17 18:21:06 +00:00
Nick Craig-Wood
c7dab94e94 Version v1.73.1 v1.73.1 2026-02-17 16:55:43 +00:00
Nick Craig-Wood
615a6f57bb build: fix build using go 1.26.0 instead of go 1.25.7
In the actions config use Go ~1.25.7 to pin the go version to 1.25.x,
x >= 7.

Before this it was choosing Go 1.26.0 which isn't what we want.
2026-02-17 16:48:52 +00:00
Nick Craig-Wood
b52fab6868 fs/march: fix runtime: program exceeds 10000-thread limit
Before this change when doing a sync with `--no-traverse` and
`--files-from` we could call `NewObject` a total of `--checkers` *
`--checkers` times simultaneously.

With `--checkers 128` this can exceed the 10,000 thread limit and
fails when run on a local to local transfer because `NewObject` calls
`lstat` which is a syscall which needs an OS thread of its own.

This patch uses a weighted semaphore to limit the number of
simultaneous calls to `NewObject` to `--checkers` instead which won't
blow the 10,000 thread limit and is far more sensible use of OS
resources.

Fixes #9073
2026-02-17 16:35:26 +00:00
Nick Craig-Wood
b740e9c299 accounting: fix missing server side stats from core/stats rc
These stats weren't being updated in the global stats read by rc
core/stats:

- transferQueue
- deletesSize
- serverSideCopies
- serverSideCopyBytes
- serverSideMoves
- serverSideMoveBytes
2026-02-17 16:35:26 +00:00
Nick Craig-Wood
3b63bd280c pacer: re-read the sleep time as it may be stale
Before this change we read sleepTime before acquiring the pacer token
and uses that possibly stale value to schedule the token return. When
many goroutines enter while sleepTime is high (e.g., 10s), each
goroutine caches this 10s value. Even if successful calls rapidly
decay the pacer state to 0, the queued goroutines still schedule 10s
token returns, so the queue drains at 1 req/10s for the entire herd.
This can create multi‑minute delays even after the pacer has dropped
to 0.

After this change we refresh the sleep time after getting the token.

This problem was introduced by the desire to skip reading the pacer
token entirely when sleepTime is 0 in high performance backends (eg
s3, azure blob).
2026-02-17 16:35:26 +00:00
Nick Craig-Wood
3a902dd1a0 pacer: fix deadlock between pacer token and --max-connections
It was possible in the presence of --max-connections and recursive
calls to the pacer to deadlock it leaving all connections waiting on
either a max connection token or a pacer token.

This fixes the problem by making sure we return the pacer token on
schedule if we take it.

This also short circuits the pacer token if sleepTime is 0.
2026-02-17 16:35:26 +00:00
Nick Craig-Wood
1e24958861 build: fix CVE-2025-68121 by updating go to 1.25.7 or later - fixes #9167 2026-02-17 16:35:26 +00:00
Nick Craig-Wood
77e0a760d8 drime: fix files and directories being created in the default workspace
Before this change directories and files were created in the default
workspace, not the workspace specified by --drime-workspace-id.
2026-02-17 16:35:26 +00:00
Nick Craig-Wood
e16ac436f7 docs: update sponsors 2026-02-17 16:35:26 +00:00
Jack Kelly
1f34163857 copyurl: Extend copyurl docs with an example of CSV FILENAMEs starting with a path. 2026-02-17 16:35:26 +00:00
José Zúniga
132184a47f internxt: implement re-login under refresh logic, improve retry logic - fixes #9174 2026-02-17 16:35:26 +00:00
Nick Craig-Wood
6e78bb1c40 docs: add ExchangeRate-API as a sponsor 2026-02-17 16:35:26 +00:00
albertony
d720452656 build: bump github.com/go-chi/chi/v5 from 5.2.3 to 5.2.5 to fix GO-2026-4316 2026-02-17 16:35:26 +00:00
kingston125
a8d374f068 Set list_version to 2 for FileLu S3 configuration 2026-02-17 16:35:26 +00:00
kingston125
53fbeb21c8 filelu: add multipart upload support with configurable cutoff 2026-02-17 16:35:26 +00:00
kingston125
350a9bc389 filelu: add multipart init response type 2026-02-17 16:35:25 +00:00
kingston125
6ba40cc97e filelu: add comment for response body wrapping 2026-02-17 16:35:25 +00:00
kingston125
1d2a159c6a filelu: avoid buffering entire file in memory
Avoid buffering the entire file in memory during download, especially
for large files.
2026-02-17 16:35:25 +00:00
Nick Craig-Wood
1adc3e241d docs: update sponsor logos 2026-02-17 16:35:25 +00:00
Enduriel
d5483e3e93 filen: fix potential panic in case of error during upload 2026-02-17 16:35:25 +00:00
Enduriel
d6bc7a69a1 filen: fix 32 bit targets not being able to list directories Fixes #9142
or do pretty much anything,
this was caused by timestamps not being read to 64 bit integers
2026-02-17 16:35:25 +00:00
Nick Craig-Wood
3311b72407 Start v1.73.1-DEV development 2026-02-17 12:16:33 +00:00
Nick Craig-Wood
f42aa5a586 Version v1.73.0 v1.73.0 2026-01-30 20:53:56 +00:00
Nick Craig-Wood
40f2e847a3 drive: fix crash when trying to creating shortcut to a Google doc
Before this change, we uses an unguarded type assertion which failed
when NewObject returned a google document instead of an Object.

This change uses the ID() method to read the id which works for all
types of file instead and returns a sensible error if one isn't found.

Fixes #8990
2026-01-30 18:17:56 +00:00
Nick Craig-Wood
846f193806 azureblob,azurefiles: factor the common auth into a library 2026-01-30 17:50:18 +00:00
Nick Craig-Wood
116d0f3708 test: allow backends to return fs.ErrorCantListRoot to skip Root tests 2026-01-30 17:50:18 +00:00
Nick Craig-Wood
140ec62683 build: add privatebeta Makefile target 2026-01-30 17:50:18 +00:00
Nick Craig-Wood
8c746f36dd docs: add Internxt as a sponsor 2026-01-30 17:38:13 +00:00