diff options
author | Robin Appelman <robin@icewind.nl> | 2023-08-29 19:47:24 +0200 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2023-09-04 16:30:07 +0200 |
commit | 19daa7094706d99100cdf03235280b96468a21a1 (patch) | |
tree | 4b28cf214768417aba0c55a57b5c05dd126f5503 /apps/files_external | |
parent | 90d05ae66a5c9306b6b0d54f578e7b4481b81904 (diff) | |
download | nextcloud-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.php | 8 |
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); } |