|  |  | @ -214,8 +214,6 @@ impl GroupHandle { | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             'rx: loop { |  |  |  |             'rx: loop { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 // TODO add timeout to catch lock-ups!
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if next_save < Instant::now() { |  |  |  |                 if next_save < Instant::now() { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     grp_trace!(self, "Save time elapsed, saving if needed"); |  |  |  |                     grp_trace!(self, "Save time elapsed, saving if needed"); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     self.save_if_needed().await.log_error("Failed to save group"); |  |  |  |                     self.save_if_needed().await.log_error("Failed to save group"); | 
			
		
	
	
		
		
			
				
					|  |  | @ -234,13 +232,13 @@ impl GroupHandle { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     break 'rx; |  |  |  |                     break 'rx; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 grp_trace!(self, "Waiting for message"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 let timeout = next_save |  |  |  |                 let timeout = next_save | 
			
		
	
		
		
			
				
					
					|  |  |  |                     .saturating_duration_since(Instant::now()) |  |  |  |                     .saturating_duration_since(Instant::now()) | 
			
		
	
		
		
			
				
					
					|  |  |  |                     .min(remains_to_idle_close) |  |  |  |                     .min(remains_to_idle_close) | 
			
		
	
		
		
			
				
					
					|  |  |  |                     .min(remains_to_retire) |  |  |  |                     .min(remains_to_retire) | 
			
		
	
		
		
			
				
					
					|  |  |  |                     .max(Duration::from_secs(1)); // at least 1s
 |  |  |  |                     .max(Duration::from_secs(1)); // at least 1s
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 grp_debug!(self, "Wait for message {:?}", timeout); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 match tokio::time::timeout(timeout, events.next()).await { |  |  |  |                 match tokio::time::timeout(timeout, events.next()).await { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     Ok(Some(event)) => { |  |  |  |                     Ok(Some(event)) => { | 
			
		
	
		
		
			
				
					
					|  |  |  |                         last_rx = Instant::now(); |  |  |  |                         last_rx = Instant::now(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -265,18 +263,6 @@ impl GroupHandle { | 
			
		
	
		
		
			
				
					
					|  |  |  |                         // Timeout so we can save if needed
 |  |  |  |                         // Timeout so we can save if needed
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                     } |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 /* ping is nice, but pleroma still sometimes doesnt send
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 notifs after a while, just let it expire */ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 // if last_ping.elapsed() > PING_INTERVAL {
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //     last_ping = Instant::now();
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //     grp_trace!(self, "Pinging");
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //     if events.send_ping()
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //         .await.is_err() {
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //         break 'rx;
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //     }
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 // }
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             grp_warn!(self, "Notif stream closed, will reopen"); |  |  |  |             grp_warn!(self, "Notif stream closed, will reopen"); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |