aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2023-08-29 19:47:24 +0200
committerRobin Appelman <robin@icewind.nl>2023-09-04 16:30:07 +0200
commit19daa7094706d99100cdf03235280b96468a21a1 (patch)
tree4b28cf214768417aba0c55a57b5c05dd126f5503 /apps/files_external
parent90d05ae66a5c9306b6b0d54f578e7b4481b81904 (diff)
downloadnextcloud-server-19daa7094706d99100cdf03235280b96468a21a1.tar.gz
nextcloud-server-19daa7094706d99100cdf03235280b96468a21a1.zip
clear sftp stat cache when opening a write stream
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'apps/files_external')
-rw-r--r--apps/files_external/lib/Lib/Storage/SFTP.php8
1 files changed, 5 insertions, 3 deletions
diff --git a/apps/files_external/lib/Lib/Storage/SFTP.php b/apps/files_external/lib/Lib/Storage/SFTP.php
index 532c50808db..3ab7ccae51d 100644
--- a/apps/files_external/lib/Lib/Storage/SFTP.php
+++ b/apps/files_external/lib/Lib/Storage/SFTP.php
@@ -370,6 +370,7 @@ class SFTP extends \OC\Files\Storage\Common {
public function fopen($path, $mode) {
try {
$absPath = $this->absPath($path);
+ $connection = $this->getConnection();
switch ($mode) {
case 'r':
case 'rb':
@@ -377,13 +378,14 @@ class SFTP extends \OC\Files\Storage\Common {
return false;
}
SFTPReadStream::register();
- $context = stream_context_create(['sftp' => ['session' => $this->getConnection()]]);
+ $context = stream_context_create(['sftp' => ['session' => $connection]]);
$handle = fopen('sftpread://' . trim($absPath, '/'), 'r', false, $context);
return RetryWrapper::wrap($handle);
case 'w':
case 'wb':
SFTPWriteStream::register();
- $context = stream_context_create(['sftp' => ['session' => $this->getConnection()]]);
+ $connection->_remove_from_stat_cache($absPath);
+ $context = stream_context_create(['sftp' => ['session' => $connection]]);
return fopen('sftpwrite://' . trim($absPath, '/'), 'w', false, $context);
case 'a':
case 'ab':
@@ -395,7 +397,7 @@ class SFTP extends \OC\Files\Storage\Common {
case 'x+':
case 'c':
case 'c+':
- $context = stream_context_create(['sftp' => ['session' => $this->getConnection()]]);
+ $context = stream_context_create(['sftp' => ['session' => $connection]]);
$handle = fopen($this->constructUrl($path), $mode, false, $context);
return RetryWrapper::wrap($handle);
}