| 
					
				 | 
			
			
				@@ -1246,6 +1246,13 @@ class ArchiveChecker: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Missing file chunks will be replaced with new chunks of the same length containing all zeros. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             If a previously missing file chunk re-appears, the replacement chunk is replaced by the correct one. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            def replacement_chunk(size): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                data = bytes(size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                chunk_id = self.key.id_hash(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cdata = self.key.encrypt(Chunk(data)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                csize = len(cdata) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return chunk_id, size, csize, cdata 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             offset = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             chunk_list = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             chunks_replaced = False 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1261,16 +1268,20 @@ class ArchiveChecker: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         logger.error('{}: New missing file chunk detected (Byte {}-{}). ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                      'Replacing with all-zero chunk.'.format(item.path, offset, offset + size)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         self.error_found = chunks_replaced = True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        data = bytes(size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        chunk_id = self.key.id_hash(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        cdata = self.key.encrypt(Chunk(data)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        csize = len(cdata) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        chunk_id, size, csize, cdata = replacement_chunk(size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         add_reference(chunk_id, size, csize, cdata) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         logger.info('{}: Previously missing file chunk is still missing (Byte {}-{}). It has a ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     'all-zero replacement chunk already.'.format(item.path, offset, offset + size)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         chunk_id, size, csize = chunk_current 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        add_reference(chunk_id, size, csize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if chunk_id in self.chunks: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            add_reference(chunk_id, size, csize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            logger.warning('{}: Missing all-zero replacement chunk detected (Byte {}-{}). ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                           'Generating new replacement chunk.'.format(item.path, offset, offset + size)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            self.error_found = chunks_replaced = True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            chunk_id, size, csize, cdata = replacement_chunk(size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            add_reference(chunk_id, size, csize, cdata) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if chunk_current == chunk_healthy: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         # normal case, all fine. 
			 |