|  | @@ -353,7 +353,7 @@ cache_failure_intro_add(const uint8_t *identity, const char *service_id,
 | 
	
		
			
				|  |  |                          rend_intro_point_failure_t failure)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    rend_cache_failure_t *fail_entry;
 | 
	
		
			
				|  |  | -  rend_cache_failure_intro_t *entry;
 | 
	
		
			
				|  |  | +  rend_cache_failure_intro_t *entry, *old_entry;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Make sure we have a failure object for this service ID and if not,
 | 
	
		
			
				|  |  |     * create it with this new intro failure entry. */
 | 
	
	
		
			
				|  | @@ -364,7 +364,10 @@ cache_failure_intro_add(const uint8_t *identity, const char *service_id,
 | 
	
		
			
				|  |  |      strmap_set_lc(rend_cache_failure, service_id, fail_entry);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    entry = rend_cache_failure_intro_entry_new(failure);
 | 
	
		
			
				|  |  | -  digestmap_set(fail_entry->intro_failures, (char *) identity, entry);
 | 
	
		
			
				|  |  | +  old_entry = digestmap_set(fail_entry->intro_failures,
 | 
	
		
			
				|  |  | +                            (char *) identity, entry);
 | 
	
		
			
				|  |  | +  /* This _should_ be NULL, but in case it isn't, free it. */
 | 
	
		
			
				|  |  | +  rend_cache_failure_intro_entry_free(old_entry);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /** Using a parsed descriptor <b>desc</b>, check if the introduction points
 |