| 
					
				 | 
			
			
				@@ -3863,144 +3863,6 @@ mock_config_line(const char *key, const char *val) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return config_line; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-static void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-test_config_parse_port_config__listenaddress(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  (void)data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  int ret; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_line_t *config_listen_address = NULL, *config_listen_address2 = NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *config_listen_address3 = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_line_t *config_port1 = NULL, *config_port2 = NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *config_port3 = NULL, *config_port4 = NULL, *config_port5 = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  smartlist_t *slout = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  port_cfg_t *port_cfg = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test basic invocation with no arguments 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, NULL, NULL, NULL, 0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Setup some test data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_listen_address = mock_config_line("DNSListenAddress", "127.0.0.1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_listen_address2 = mock_config_line("DNSListenAddress", "x$$$:::345"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_listen_address3 = mock_config_line("DNSListenAddress", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            "127.0.0.1:1442"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_port1 = mock_config_line("DNSPort", "42"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_port2 = mock_config_line("DNSPort", "43"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_port1->next = config_port2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_port3 = mock_config_line("DNSPort", "auto"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_port4 = mock_config_line("DNSPort", "55542"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_port5 = mock_config_line("DNSPort", "666777"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test failure when we have a ListenAddress line and several 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Port lines for the same portname 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port1, config_listen_address, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test case when we have a listen address, no default port and allow 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // spurious listen address lines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, NULL, config_listen_address, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          0, CL_PORT_ALLOW_EXTRA_LISTENADDR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test case when we have a listen address, no default port but doesn't 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // allow spurious listen address lines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, NULL, config_listen_address, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test case when we have a listen address, and a port that points to auto, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // should use the AUTO port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  slout = smartlist_new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port3, config_listen_address, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  port_cfg = (port_cfg_t *)smartlist_get(slout, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(port_cfg->port, OP_EQ, CFG_AUTO_PORT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test when we have a listen address and a custom port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port4, config_listen_address, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(smartlist_len(slout), OP_EQ, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  port_cfg = (port_cfg_t *)smartlist_get(slout, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(port_cfg->port, OP_EQ, 55542); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test when we have a listen address and an invalid custom port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port5, config_listen_address, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test we get a server port configuration when asked for it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, NULL, config_listen_address, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          123, CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(smartlist_len(slout), OP_EQ, 4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  port_cfg = (port_cfg_t *)smartlist_get(slout, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(port_cfg->port, OP_EQ, 123); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(port_cfg->server_cfg.no_listen, OP_EQ, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(port_cfg->server_cfg.bind_ipv4_only, OP_EQ, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test an invalid ListenAddress configuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, NULL, config_listen_address2, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          222, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test default to the port in the listen address if available 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port2, config_listen_address3, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(smartlist_len(slout), OP_EQ, 5); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  port_cfg = (port_cfg_t *)smartlist_get(slout, 4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(port_cfg->port, OP_EQ, 1442); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test we work correctly without an out, but with a listen address 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // and a port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port2, config_listen_address, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test warning nonlocal control 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port2, config_listen_address, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          CONN_TYPE_CONTROL_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          CL_PORT_WARN_NONLOCAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test warning nonlocal ext or listener 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port2, config_listen_address, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          CONN_TYPE_EXT_OR_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          CL_PORT_WARN_NONLOCAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test warning nonlocal other 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port2, config_listen_address, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          0, NULL, 0, CL_PORT_WARN_NONLOCAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Test warning nonlocal control without an out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port2, config_listen_address, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          CONN_TYPE_CONTROL_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          CL_PORT_WARN_NONLOCAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- done: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_free_lines(config_listen_address); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_free_lines(config_listen_address2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_free_lines(config_listen_address3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_free_lines(config_port1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  /* 2 was linked from 1. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_free_lines(config_port3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_free_lines(config_port4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  config_free_lines(config_port5); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (slout) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  smartlist_free(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 test_config_parse_port_config__ports__no_ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4012,40 +3874,40 @@ test_config_parse_port_config__ports__no_ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   slout = smartlist_new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test no defaultport, no defaultaddress and no out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, NULL, NULL, "DNS", 0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, NULL, "DNS", 0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test with defaultport, no defaultaddress and no out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, NULL, NULL, "DNS", 0, NULL, 42, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, NULL, "DNS", 0, NULL, 42, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test no defaultport, with defaultaddress and no out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, NULL, NULL, "DNS", 0, "127.0.0.2", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, NULL, "DNS", 0, "127.0.0.2", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test with defaultport, with defaultaddress and no out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, NULL, NULL, "DNS", 0, "127.0.0.2", 42, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, NULL, "DNS", 0, "127.0.0.2", 42, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test no defaultport, no defaultaddress and with out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, NULL, NULL, "DNS", 0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, NULL, "DNS", 0, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test with defaultport, no defaultaddress and with out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, NULL, NULL, "DNS", 0, NULL, 42, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, NULL, "DNS", 0, NULL, 42, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test no defaultport, with defaultaddress and with out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, NULL, NULL, "DNS", 0, "127.0.0.2", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, NULL, "DNS", 0, "127.0.0.2", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test with defaultport, with defaultaddress and out, adds a new port cfg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, NULL, NULL, "DNS", 0, "127.0.0.2", 42, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, NULL, "DNS", 0, "127.0.0.2", 42, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   port_cfg = (port_cfg_t *)smartlist_get(slout, 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4056,7 +3918,7 @@ test_config_parse_port_config__ports__no_ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // for a unix address 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, NULL, NULL, "DNS", 0, "/foo/bar/unixdomain", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, NULL, "DNS", 0, "/foo/bar/unixdomain", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           42, CL_PORT_IS_UNIXSOCKET); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4085,28 +3947,28 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test error when encounters an invalid Port specification 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test error when encounters an empty unix domain specification 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_invalid); config_port_invalid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "unix:"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test error when encounters a unix domain specification but the listener 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // doesn't support domain sockets 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "unix:/tmp/foo/bar"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_valid, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_DNS_LISTENER, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test valid unix domain 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef _WIN32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4131,7 +3993,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "unix:/tmp/foo/bar NoIPv4Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "NoIPv6Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "NoOnionTraffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4140,7 +4002,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_invalid); config_port_invalid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "127.0.0.1:80 NoDNSRequest"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_DNS_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4153,7 +4015,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "127.0.0.1:80 " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoIPv6Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoIPv4Traffic NoOnionTraffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_DNS_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4169,7 +4031,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("SOCKSPort", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "NoIPv6Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "unix:/tmp/foo/bar NoIPv4Traffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4182,7 +4044,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/foo/bar " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoIPv6Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoDNSRequest NoIPv4Traffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef _WIN32 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4204,7 +4066,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", "unix:\"/tmp/foo/ bar\" " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoIPv6Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoDNSRequest NoIPv4Traffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef _WIN32 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4226,7 +4088,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", "unix:\"/tmp/foo/ bar " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoIPv6Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoDNSRequest NoIPv4Traffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4238,7 +4100,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", "unix:\"\" " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoIPv6Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoDNSRequest NoIPv4Traffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4249,7 +4111,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/foo/bar " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "OnionTrafficOnly"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef _WIN32 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4270,7 +4132,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/foo/bar " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "NoIPv4Traffic IPv6Traffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef _WIN32 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4289,7 +4151,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/foo/bar " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "IPv4Traffic IPv6Traffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef _WIN32 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4305,28 +4167,28 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test failure if we specify world writable for an IP Port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_invalid); config_port_invalid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "42 WorldWritable"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test failure if we specify group writable for an IP Port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_invalid); config_port_invalid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "42 GroupWritable"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test failure if we specify group writable for an IP Port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_invalid); config_port_invalid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "42 RelaxDirModeCheck"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test success with only a port (this will fail without a default address) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_valid); config_port_valid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4335,7 +4197,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 IsolateDestPort"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4348,7 +4210,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 NoIsolateDestPorts"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4361,7 +4223,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 IsolateDestAddr"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4374,7 +4236,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 IsolateSOCKSAuth"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4387,7 +4249,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 IsolateClientProtocol"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4400,7 +4262,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 IsolateClientAddr"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4411,7 +4273,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test success with ignored unknown options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_valid); config_port_valid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 ThisOptionDoesntExist"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4420,7 +4282,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 NoIsolateSOCKSAuth"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.3", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4433,7 +4295,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "42 IPv6Traffic PreferIPv6"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, "127.0.0.42", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4446,7 +4308,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 CacheIPv4DNS"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4459,7 +4321,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 CacheIPv6DNS"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4472,7 +4334,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 NoCacheIPv4DNS"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4485,7 +4347,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 CacheDNS"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, CL_PORT_TAKES_HOSTNAMES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4498,7 +4360,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 UseIPv4Cache"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4511,7 +4373,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 UseIPv6Cache"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4524,7 +4386,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 UseDNSCache"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4537,7 +4399,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 NoPreferIPv6Automap"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4549,7 +4411,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 PreferSOCKSNoAuth"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4564,14 +4426,14 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid->next = config_port_valid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test success with warn non-local control 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "Control", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "Control", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_CONTROL_LISTENER, "127.0.0.42", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_WARN_NONLOCAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4579,7 +4441,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test success with warn non-local listener 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "ExtOR", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "ExtOR", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_EXT_OR_LISTENER, "127.0.0.42", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_WARN_NONLOCAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4587,12 +4449,12 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test success with warn non-local other 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, CL_PORT_WARN_NONLOCAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Test success with warn non-local other without out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.42", 0, CL_PORT_WARN_NONLOCAL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4603,7 +4465,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 IPv4Traffic " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "IPv6Traffic"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.44", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_TAKES_HOSTNAMES | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_NO_STREAM_OPTIONS); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4618,7 +4480,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=invalid"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.44", 0, CL_PORT_NO_STREAM_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4630,7 +4492,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=123"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.44", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4640,7 +4502,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "42 SessionGroup=123 " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "SessionGroup=321"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.44", 0, CL_PORT_NO_STREAM_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4649,7 +4511,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "42 SessionGroup=1111122"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.44", 0, CL_PORT_NO_STREAM_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4661,7 +4523,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.45", 0, CL_PORT_IS_UNIXSOCKET); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4671,7 +4533,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "something"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.45", 0, CL_PORT_IS_UNIXSOCKET); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4684,7 +4546,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "auto"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.46", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4698,7 +4560,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "127.0.0.122:auto"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.46", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4711,7 +4573,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_invalid); config_port_invalid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "invalidstuff!!:auto"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   MOCK(tor_addr_lookup, mock_tor_addr_lookup__fail_on_bad_addrs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(NULL, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(NULL, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.46", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   UNMOCK(tor_addr_lookup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4721,7 +4583,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "127.0.0.123:656"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.46", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4735,7 +4597,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "something wrong"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.46", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4744,7 +4606,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "127.0.1.0:123:auto"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           "127.0.0.46", 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4754,7 +4616,7 @@ test_config_parse_port_config__ports__ports_given(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("SOCKSPort", "unix:/tmp/somewhere"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "SOCKS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CONN_TYPE_AP_LISTENER, "127.0.0.46", 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_DFLT_GROUP_WRITABLE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef _WIN32 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4789,7 +4651,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_free_lines(config_port_valid); config_port_valid = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "127.0.0.124:656 NoAdvertise"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4802,7 +4664,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 NoListen"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4816,7 +4678,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "127.0.0.124:656 NoListen " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "NoAdvertise"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           0, CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4825,7 +4687,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 IPv4Only"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4838,7 +4700,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "[::1]:656 IPv6Only"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4852,7 +4714,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "127.0.0.124:656 IPv6Only " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "IPv4Only"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           0, CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4861,7 +4723,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_valid = mock_config_line("DNSPort", "127.0.0.124:656 unknown"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_valid, NULL, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_valid, "DNS", 0, NULL, 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(smartlist_len(slout), OP_EQ, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4872,7 +4734,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                          "127.0.0.124:656 IPv6Only"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           0, CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4881,7 +4743,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("DNSPort", "[::1]:656 IPv4Only"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "DNS", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           0, CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4890,7 +4752,7 @@ test_config_parse_port_config__ports__server_options(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   smartlist_clear(slout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   config_port_invalid = mock_config_line("ORPort", "unix:\"\""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ret = parse_port_config(slout, config_port_invalid, NULL, "ORPort", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ret = parse_port_config(slout, config_port_invalid, "ORPort", 0, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           0, CL_PORT_SERVER_OPTIONS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tt_int_op(ret, OP_EQ, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4951,7 +4813,6 @@ struct testcase_t config_tests[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CONFIG_TEST(fix_my_family, 0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CONFIG_TEST(directory_fetch, 0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CONFIG_TEST(port_cfg_line_extract_addrport, 0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CONFIG_TEST(parse_port_config__listenaddress, 0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CONFIG_TEST(parse_port_config__ports__no_ports_given, 0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CONFIG_TEST(parse_port_config__ports__server_options, 0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CONFIG_TEST(parse_port_config__ports__ports_given, 0), 
			 |