1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Динамический DNS и кеширование ip

Тема в разделе 'Кодинг/Собственные решения', создана пользователем cap86, 16 янв 2010.

  1. cap86 Ньюфаг

    Сообщения:
    3
    Спасибы:
    0
    Проблема в следующем:
    На сервере PvPGN динамический ip адрес. Соответственно стоит ddclient который обновляет ip для хоста infernoserver.dyndns.org.
    Раз в сутки ip адрес сервера меняется, при этом все боты от него отваливаются. После смены адреса они не могут подключиться назад в логе ghost-а видим:
    Код:
    [Sat Jan 15 12:42:52 2010] [BNET: Inferno] connecting to server [infernoserver.dyndns.org] on port 6112
    [Sat Jan 15 12:42:52 2010] [BNET: Inferno] using cached server IP address 95.179.10.69
    [Sat Jan 15 12:43:07 2010] [BNET: Inferno] connect timed out 
    "using cached server IP address" - можно это как-то отключить?
  2. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    В файле bnet.cpp попробуй тут :
    удалить параметр m_FirstConnect = false; и скомпилить, если будет ругаться попробуй удалить всю функцию, ну и сам подумай как обойти это
    Примерно 853 строка.
  3. cap86 Ньюфаг

    Сообщения:
    3
    Спасибы:
    0
    m_FirstConnect = true;
    не помогло, продолжает ломиться по старому адресу, но чаще)
    Копаю дальше.
  4. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    нужно было попроболвать просто удалить m_FirstConnect = false;
  5. cap86 Ньюфаг

    Сообщения:
    3
    Спасибы:
    0
    Решилось коментированием if( m_ServerIP.empty( ) ) чуть ниже. Оставил только один путь.
    Код:
    //		if( m_ServerIP.empty( ) )
    //		{
    			m_Socket->Connect( m_GHost->m_BindAddress, m_Server, 6112 );
    
    			if( !m_Socket->HasError( ) )
    			{
    				m_ServerIP = m_Socket->GetIPString( );
    				CONSOLE_Print( "[BNET: " + m_ServerAlias + "] resolved and cached server IP address " + m_ServerIP );
    			}
    //		}
    //		else
    //		{
    			// use cached server IP address since resolving takes time and is blocking
    
    //			CONSOLE_Print( "[BNET: " + m_ServerAlias + "] using cached server IP address " + m_ServerIP );
    //			m_Socket->Connect( m_GHost->m_BindAddress, m_ServerIP, 6112 );
    //		}