|  |  | @ -207,10 +207,10 @@ class Uploader: | 
			
		
	
		
		
			
				
					
					|  |  |  |     return success |  |  |  |     return success | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   def step(self, network_type: int, metered: bool) -> bool: |  |  |  |   def step(self, network_type: int, metered: bool) -> Optional[bool]: | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     d = self.next_file_to_upload(metered) |  |  |  |     d = self.next_file_to_upload(metered) | 
			
		
	
		
		
			
				
					
					|  |  |  |     if d is None: |  |  |  |     if d is None: | 
			
		
	
		
		
			
				
					
					|  |  |  |       return True |  |  |  |       return None | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     name, key, fn = d |  |  |  |     name, key, fn = d | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -253,11 +253,14 @@ def main(exit_event: Optional[threading.Event] = None) -> None: | 
			
		
	
		
		
			
				
					
					|  |  |  |       continue |  |  |  |       continue | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     success = uploader.step(sm['deviceState'].networkType.raw, sm['deviceState'].networkMetered) |  |  |  |     success = uploader.step(sm['deviceState'].networkType.raw, sm['deviceState'].networkMetered) | 
			
		
	
		
		
			
				
					
					|  |  |  |     if success: |  |  |  |     if success is None: | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       backoff = 60 if offroad else 5 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     elif success: | 
			
		
	
		
		
			
				
					
					|  |  |  |       backoff = 0.1 |  |  |  |       backoff = 0.1 | 
			
		
	
		
		
			
				
					
					|  |  |  |     elif allow_sleep: |  |  |  |     else: | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       cloudlog.info("upload backoff %r", backoff) |  |  |  |       cloudlog.info("upload backoff %r", backoff) | 
			
		
	
		
		
			
				
					
					|  |  |  |       backoff = min(backoff*2, 120) |  |  |  |       backoff = min(backoff*2, 120) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if allow_sleep: | 
			
		
	
		
		
			
				
					
					|  |  |  |       time.sleep(backoff + random.uniform(0, backoff)) |  |  |  |       time.sleep(backoff + random.uniform(0, backoff)) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |