Error when comparing a file checksum synchronized to SMB

Hello,
I would like to ask for advice to solve a problem:
When synchronizing new files to external SMB storage via OC client, I get the error “The computed checksum does not match the one received from the client.”.

  • The problem only occurs when synchronizing via OC client to external storage (NetApp, WinSrv2019)
  • The same problem occurs on a new installation
  • Via the web interface, the file upload is fine
  • In the function isChecksumValid in the file /apps/dav/lib/Connector/Sabre/File.php:653 there is isset(false) if I add “|| empty()” to the test the synchronization goes without problem

I have checked the database table oc_filecache and it does not contain checksums for external storage. So I want to ask if this behavior is OK and possibly where the problem could be.

OC 10.12.1.3 is running on openSUSE 15.4, Apache/2.4.51 prefork, PHP 7.4.33

Thank you in advance for any help.

It’s definitely not the best solution, but as a temporary solution this modification helped me:

./lib/private/Files/Stream/Checksum.php

public function stream_close()

@@ -189,7 +189,7 @@ class Checksum extends Wrapper {
-               if ($this->fromBeginning && (!$this->reading || parent::stream_eof())) {
+               if ($this->fromBeginning && (!$this->reading || parent::stream_eof()) || !defined(parent::stream_eof())) {
2 Likes

Hey,

maybe you can try to create an issue over at Issues · owncloud/core · GitHub to suggest your solution to the ownCloud people?

We notice already the issue with external storages, it will be fixed in 10.13.

1 Like

Well, that’s great. Thank you.

1 Like

Works great!

Thank you tomas.

Helpfully until we get v10.13.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.