|  | @@ -787,6 +787,7 @@ public:
 | 
	
		
			
				|  |  |  	// Time we last received a packet from a global address
 | 
	
		
			
				|  |  |  	uint64_t _lastDirectReceiveFromGlobal;
 | 
	
		
			
				|  |  |  #ifdef ZT_TCP_FALLBACK_RELAY
 | 
	
		
			
				|  |  | +	InetAddress _fallbackRelayAddress;
 | 
	
		
			
				|  |  |  	uint64_t _lastSendToGlobalV4;
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -850,6 +851,7 @@ public:
 | 
	
		
			
				|  |  |  		,_udpPortPickerCounter(0)
 | 
	
		
			
				|  |  |  		,_lastDirectReceiveFromGlobal(0)
 | 
	
		
			
				|  |  |  #ifdef ZT_TCP_FALLBACK_RELAY
 | 
	
		
			
				|  |  | +		, _fallbackRelayAddress(ZT_TCP_FALLBACK_RELAY)
 | 
	
		
			
				|  |  |  		,_lastSendToGlobalV4(0)
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  		,_lastRestart(0)
 | 
	
	
		
			
				|  | @@ -2147,6 +2149,9 @@ public:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		// bondingPolicy cannot be used with allowTcpFallbackRelay
 | 
	
		
			
				|  |  |  		_allowTcpFallbackRelay = OSUtils::jsonBool(settings["allowTcpFallbackRelay"],true) && !(_node->bondController()->inUse());
 | 
	
		
			
				|  |  | +#ifdef ZT_TCP_FALLBACK_RELAY
 | 
	
		
			
				|  |  | +		_fallbackRelayAddress = InetAddress(OSUtils::jsonString("tcpFallbackRelay", ZT_TCP_FALLBACK_RELAY).c_str());
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  |  		_primaryPort = (unsigned int)OSUtils::jsonInt(settings["primaryPort"],(uint64_t)_primaryPort) & 0xffff;
 | 
	
		
			
				|  |  |  		_allowSecondaryPort = OSUtils::jsonBool(settings["allowSecondaryPort"],true);
 | 
	
		
			
				|  |  |  		_secondaryPort = (unsigned int)OSUtils::jsonInt(settings["secondaryPort"],0);
 | 
	
	
		
			
				|  | @@ -3154,7 +3159,7 @@ public:
 | 
	
		
			
				|  |  |  								phyOnTcpWritable(_tcpFallbackTunnel->sock,&tmpptr);
 | 
	
		
			
				|  |  |  							}
 | 
	
		
			
				|  |  |  						} else if (((now - _lastSendToGlobalV4) < ZT_TCP_FALLBACK_AFTER)&&((now - _lastSendToGlobalV4) > (ZT_PING_CHECK_INVERVAL / 2))) {
 | 
	
		
			
				|  |  | -							const InetAddress addr(ZT_TCP_FALLBACK_RELAY);
 | 
	
		
			
				|  |  | +							const InetAddress addr(_fallbackRelayAddress);
 | 
	
		
			
				|  |  |  							TcpConnection *tc = new TcpConnection();
 | 
	
		
			
				|  |  |  							{
 | 
	
		
			
				|  |  |  								Mutex::Lock _l(_tcpConnections_m);
 |