Always call res_init() before getaddrinfo().
Unfortunately, glibc assumes that /etc/resolv.conf is a static file that never changes. Even on servers, /etc/resolv.conf might be a dynamically generated file, and we never know when it changes. So just call res_init() every time, so glibc uses up-to-date nameserver information. Conflicts: src/have.h src/net.c src/net_setup.c
This commit is contained in:
		
						commit
						95921696a4
					
				
					 5 changed files with 21 additions and 17 deletions
				
			
		|  | @ -464,10 +464,10 @@ and | |||
| .Ev REMOTEPORT | ||||
| are available. | ||||
| .El | ||||
| .It Va ReplayWindow Li = Ar bytes Pq 16 | ||||
| .It Va ReplayWindow Li = Ar bytes Pq 32 | ||||
| This is the size of the replay tracking window for each remote node, in bytes. | ||||
| The window is a bitfield which tracks 1 packet per bit, so for example | ||||
| the default setting of 16 will track up to 128 packets in the window. In high | ||||
| the default setting of 32 will track up to 256 packets in the window. In high | ||||
| bandwidth scenarios, setting this to a higher value can reduce packet loss from | ||||
| the interaction of replay tracking with underlying real packet loss and/or | ||||
| reordering. Setting this to zero will disable replay tracking completely and | ||||
|  | @ -502,12 +502,14 @@ If tinc doesn't receive any UDP ping replies over the specified interval, | |||
| it will assume UDP communication is broken and will fall back to TCP. | ||||
| .It Va UDPInfoInterval Li = Ar seconds Pq 5 | ||||
| The minimum amount of time between sending periodic updates about UDP addresses, which are mostly useful for UDP hole punching. | ||||
| .It Va UDPRcvBuf Li = Ar bytes Pq OS default | ||||
| .It Va UDPRcvBuf Li = Ar bytes Pq 1048576 | ||||
| Sets the socket receive buffer size for the UDP socket, in bytes. | ||||
| If unset, the default buffer size will be used by the operating system. | ||||
| .It Va UDPSndBuf Li = Ar bytes Pq OS default | ||||
| If set to zero, the default buffer size will be used by the operating system. | ||||
| Note: this setting can have a significant impact on performance, especially raw throughput. | ||||
| .It Va UDPSndBuf Li = Ar bytes Pq 1048576 | ||||
| Sets the socket send buffer size for the UDP socket, in bytes. | ||||
| If unset, the default buffer size will be used by the operating system. | ||||
| If set to zero, the default buffer size will be used by the operating system. | ||||
| Note: this setting can have a significant impact on performance, especially raw throughput. | ||||
| .El | ||||
| .Sh HOST CONFIGURATION FILES | ||||
| The host configuration files contain all information needed | ||||
|  |  | |||
|  | @ -1207,10 +1207,10 @@ The environment variables @env{NAME}, @env{NODE}, @env{REMOTEADDRES} and @env{RE | |||
| @end table | ||||
| 
 | ||||
| @cindex ReplayWindow | ||||
| @item ReplayWindow = <bytes> (16) | ||||
| @item ReplayWindow = <bytes> (32) | ||||
| This is the size of the replay tracking window for each remote node, in bytes. | ||||
| The window is a bitfield which tracks 1 packet per bit, so for example | ||||
| the default setting of 16 will track up to 128 packets in the window. In high | ||||
| the default setting of 32 will track up to 256 packets in the window. In high | ||||
| bandwidth scenarios, setting this to a higher value can reduce packet loss from | ||||
| the interaction of replay tracking with underlying real packet loss and/or | ||||
| reordering. Setting this to zero will disable replay tracking completely and | ||||
|  | @ -1258,14 +1258,16 @@ it will assume UDP communication is broken and will fall back to TCP. | |||
| The minimum amount of time between sending periodic updates about UDP addresses, which are mostly useful for UDP hole punching. | ||||
| 
 | ||||
| @cindex UDPRcvBuf | ||||
| @item UDPRcvBuf = <bytes> (OS default) | ||||
| @item UDPRcvBuf = <bytes> (1048576) | ||||
| Sets the socket receive buffer size for the UDP socket, in bytes. | ||||
| If unset, the default buffer size will be used by the operating system. | ||||
| If set to zero, the default buffer size will be used by the operating system. | ||||
| Note: this setting can have a significant impact on performance, especially raw throughput. | ||||
| 
 | ||||
| @cindex UDPSndBuf | ||||
| @item UDPSndBuf = <bytes> Pq OS default | ||||
| @item UDPSndBuf = <bytes> (1048576) | ||||
| Sets the socket send buffer size for the UDP socket, in bytes. | ||||
| If unset, the default buffer size will be used by the operating system. | ||||
| If set to zero, the default buffer size will be used by the operating system. | ||||
| Note: this setting can have a significant impact on performance, especially raw throughput. | ||||
| 
 | ||||
| @end table | ||||
| 
 | ||||
|  |  | |||
|  | @ -64,7 +64,7 @@ static char lzo_wrkmem[LZO1X_999_MEM_COMPRESS > LZO1X_1_MEM_COMPRESS ? LZO1X_999 | |||
| 
 | ||||
| static void send_udppacket(node_t *, vpn_packet_t *); | ||||
| 
 | ||||
| unsigned replaywin = 16; | ||||
| unsigned replaywin = 32; | ||||
| bool localdiscovery = true; | ||||
| bool udp_discovery = true; | ||||
| int udp_discovery_keepalive_interval = 10; | ||||
|  |  | |||
|  | @ -857,14 +857,14 @@ static bool setup_myself(void) { | |||
| 	} | ||||
| 
 | ||||
| 	if(get_config_int(lookup_config(config_tree, "UDPRcvBuf"), &udp_rcvbuf)) { | ||||
| 		if(udp_rcvbuf <= 0) { | ||||
| 		if(udp_rcvbuf < 0) { | ||||
| 			logger(DEBUG_ALWAYS, LOG_ERR, "UDPRcvBuf cannot be negative!"); | ||||
| 			return false; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if(get_config_int(lookup_config(config_tree, "UDPSndBuf"), &udp_sndbuf)) { | ||||
| 		if(udp_sndbuf <= 0) { | ||||
| 		if(udp_sndbuf < 0) { | ||||
| 			logger(DEBUG_ALWAYS, LOG_ERR, "UDPSndBuf cannot be negative!"); | ||||
| 			return false; | ||||
| 		} | ||||
|  |  | |||
|  | @ -43,8 +43,8 @@ | |||
| int addressfamily = AF_UNSPEC; | ||||
| int maxtimeout = 900; | ||||
| int seconds_till_retry = 5; | ||||
| int udp_rcvbuf = 0; | ||||
| int udp_sndbuf = 0; | ||||
| int udp_rcvbuf = 1024 * 1024; | ||||
| int udp_sndbuf = 1024 * 1024; | ||||
| int max_connection_burst = 100; | ||||
| 
 | ||||
| listen_socket_t listen_socket[MAXSOCKETS]; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue