| 
					
				 | 
			
			
				@@ -678,7 +678,7 @@ config_free_all(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (configured_ports) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     SMARTLIST_FOREACH(configured_ports, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      port_cfg_t *, p, tor_free(p)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      port_cfg_t *, p, port_cfg_free(p)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     smartlist_free(configured_ports); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     configured_ports = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4589,6 +4589,17 @@ parse_dir_fallback_line(const char *line, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return r; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** Allocate and return a new port_cfg_t with reasonable defaults. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static port_cfg_t * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+port_cfg_new(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  port_cfg_t *cfg = tor_malloc_zero(sizeof(port_cfg_t)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cfg->ipv4_traffic = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cfg->cache_ipv4_answers = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cfg->use_cached_ipv4_answers = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return cfg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Free all storage held in <b>port</b> */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 port_cfg_free(port_cfg_t *port) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4763,7 +4774,7 @@ parse_port_config(smartlist_t *out, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (use_server_options && out) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       /* Add a no_listen port. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      port_cfg_t *cfg = tor_malloc_zero(sizeof(port_cfg_t)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      port_cfg_t *cfg = port_cfg_new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cfg->type = listener_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cfg->port = mainport; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       tor_addr_make_unspec(&cfg->addr); /* Server ports default to 0.0.0.0 */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4782,15 +4793,13 @@ parse_port_config(smartlist_t *out, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (out) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        port_cfg_t *cfg = tor_malloc_zero(sizeof(port_cfg_t)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        port_cfg_t *cfg = port_cfg_new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cfg->type = listener_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cfg->port = port ? port : mainport; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tor_addr_copy(&cfg->addr, &addr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cfg->session_group = SESSION_GROUP_UNSET; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cfg->isolation_flags = ISO_DEFAULT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cfg->no_advertise = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cfg->ipv4_traffic = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cfg->cache_ipv4_answers = cfg->use_cached_ipv4_answers = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         smartlist_add(out, cfg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4808,14 +4817,12 @@ parse_port_config(smartlist_t *out, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    * one. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (! ports) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (defaultport && out) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       port_cfg_t *cfg = tor_malloc_zero(sizeof(port_cfg_t)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       port_cfg_t *cfg = port_cfg_new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cfg->type = listener_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cfg->port = defaultport; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        tor_addr_parse(&cfg->addr, defaultaddr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cfg->session_group = SESSION_GROUP_UNSET; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cfg->isolation_flags = ISO_DEFAULT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       cfg->ipv4_traffic = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       cfg->cache_ipv4_answers = cfg->use_cached_ipv4_answers = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        smartlist_add(out, cfg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return 0; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -5033,7 +5040,7 @@ parse_port_config(smartlist_t *out, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (out && port) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      port_cfg_t *cfg = tor_malloc_zero(sizeof(port_cfg_t)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      port_cfg_t *cfg = port_cfg_new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       tor_addr_copy(&cfg->addr, &addr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cfg->port = port; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cfg->type = listener_type; 
			 |