diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php
index 3402946a136b867df5550df582ae8505382c5560..fd12039d91674d30ee0b26ca98fd6069ce57114b 100644
--- a/lib/private/connector/sabre/file.php
+++ b/lib/private/connector/sabre/file.php
@@ -215,7 +215,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
 			if (isset($_SERVER['CONTENT_LENGTH'])) {
 				$expected = $_SERVER['CONTENT_LENGTH'];
 				if ($bytesWritten != $expected) {
-					$chunk_handler->cleanup();
+					$chunk_handler->remove($info['index']);
 					throw new Sabre_DAV_Exception_BadRequest(
 						'expected filesize ' . $expected . ' got ' . $bytesWritten);
 				}
diff --git a/lib/private/filechunking.php b/lib/private/filechunking.php
index 0dfce696cda7a37057bc853e846a5426477ac653..aa4f73c7c05cc00669bbe8fe0391d2d4ea404d9f 100644
--- a/lib/private/filechunking.php
+++ b/lib/private/filechunking.php
@@ -85,6 +85,16 @@ class OC_FileChunking {
 		}
 	}
 
+	/**
+	 * Removes one specific chunk
+	 * @param $index
+	 */
+	public function remove($index) {
+		$cache = $this->getCache();
+		$prefix = $this->getPrefix();
+		$cache->remove($prefix.$index);
+	}
+
 	public function signature_split($orgfile, $input) {
 		$info = unpack('n', fread($input, 2));
 		$blocksize = $info[1];