| 
					
				 | 
			
			
				@@ -296,12 +296,19 @@ retry_all_socks_conn_waiting_for_desc(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Order a refetch in case it works this time. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     status = hs_client_refetch_hsdesc(&edge_conn->hs_ident->identity_pk); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (BUG(status == HS_CLIENT_FETCH_HAVE_DESC)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      /* This case is unique because it can NOT happen in theory. Once we get 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       * a new descriptor, the HS client subsystem is notified immediately and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       * the connections waiting for it are handled which means the state will 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       * change from renddesc wait state. Log this and continue to next 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       * connection. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (status == HS_CLIENT_FETCH_HAVE_DESC) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /* This is a rare case where a SOCKS connection is in state waiting for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * a descriptor but we do have it in the cache. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * This can happen is tor comes back from suspend where it previously 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * had the descriptor but the intro points were not usuable. Once it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * came back to life, the intro point failure cache was cleaned up and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * thus the descriptor became usable again leaving us in this code path. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * We'll mark the connection as waiting for a circuit so the descriptor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * can be retried. This is safe because a connection in state waiting 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * for a descriptor can not be in the entry connection pending list. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      mark_conn_as_waiting_for_circuit(base_conn, approx_time()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* In the case of an error, either all SOCKS connections have been 
			 |