Fehler bei der Übertragung

  • Bei welchen Anbieter? Lokal
  • Auf welcher Hardware? PC
  • Betriebssystem sowie Version ALLER beteiligten Systeme? Debian und Android
  • Nextcloud Version: Nextcloud Hub 10 (31.0.4)
  • PHP Version: 8.3
  • Welche Datenbank? MariaDB
  • Apache Webserver
  • NC läuft in VM
  • Netzwerk Aufgliederung: zb. Router>Switch>pc>
  • Bei was für einer Aktion ist der Fehler aufgetreten? Beim hochladen von bestimmten Dateien

Ich habe eine Datei, wo ich zuverlässig Reproduktion kann, dass beim Versuch die Datei hochzuladen, dass dann immer exakt 4097 Byte im Body vom Put am Ende fehlen. Es sind tatsächlich 4097 und nicht 4096 Byte. Also 4k + 1 Byte fehlend. Die Datei die ich Versuche hochzuladen ist 17-18 MB groß. Am Android Client wird die Datei korrekt gelesen und der Datei Stream der genutzt wird für das hochladen enthält die fehlenden Byte.

Hier ein Screenshot von Fehler innerhalb von nextcloud.

OK, fangen wir mal mit den leichten Sachen an:

  • Was ist das für eine Datei?
  • Ist es nur bei dieser Datei in der selben Größe?
  • Hast du es mal an einem anderen Gerät versucht?

Hi,

Ein jpg ist es.
Sonst habe ich es nur bei zwei Anderen Dateien von 4000+. Beides Dateien sind MP4. Die eine ist 20GB und die andere ist 40GB. Die Abzahl der fehlenden Byte ist je Datei unterschiedlich aber pro Datei immer gleich.
Ja habe ich. Am Browser geht es und in der Windows App auch. Ich habe nur ein Problem mit dem Android Client.

Ich habe mir die Datenübertragung angesehen. Die Daten werden vollständig vom Android Client gesendet. Der Server schickt keine Antwort dem Client wenn dieser Fehler auftritt.
image
image

Android App aus dem Google Play Store oder die F-Droid Version? Wenn ersteres bitte mal die F-Droid Version testen. Wenn du unbedingt die Gplay Version nutzt willst, lödche die Daten der App und richte die neu ein. Wiederhole den Test.

Habe die Gplay verson Probiert und auch aus dem Source Code(Master) selbst kompiliert. Der Fehler tritt in beiden Versionen auf.

1 Like

Weiß nicht mehr weiter

Habe den Fehler gefunden. Er ist in der android-library in ChunkFromFileChannelRequestEntity.java Zeile 106.

long maxCount = Math.min(mOffset + length - 1, mChannel.size());

muss ersetzt werden durch

long maxCount = Math.min(mOffset + length, mChannel.size());

und schon geht es.

@leachimus Habe es jetzt mal als änderung eingereicht.

1 Like

Danke, bin bisher selbst nicht auf das Problem gestoßen, aber es wird einigen eine Hilfe sein.

Eigentlich müsste der Fehler immer dann auftreten, wenn die Dateigröße oder Chunkgröße in Bytes -1 durch 4096 ohne Rest teilbar ist.