fixing buts appearing after some time being connected
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/hilnius@13158 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
@@ -58,7 +58,7 @@ Event::Event(ENetEvent* event)
|
||||
peer = NULL;
|
||||
for (unsigned int i = 0; i < peers.size(); i++)
|
||||
{
|
||||
if (*peers[i] == event->peer)
|
||||
if (peers[i]->m_peer == event->peer)
|
||||
{
|
||||
peer = peers[i];
|
||||
return;
|
||||
@@ -69,6 +69,7 @@ Event::Event(ENetEvent* event)
|
||||
STKPeer* new_peer = new STKPeer();
|
||||
new_peer->m_peer = event->peer;
|
||||
peer = new_peer;
|
||||
Log::verbose("Event", "Creating a new peer, address are STKPeer:%ld, Peer:%ld", (long int)(new_peer), (long int)(event->peer));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -92,21 +92,21 @@ void NetworkManager::notifyEvent(Event* event)
|
||||
switch (event->type)
|
||||
{
|
||||
case EVENT_TYPE_MESSAGE:
|
||||
Log::info("NetworkManager", "Message, Sender : %i.%i.%i.%i, message = \"%s\"", event->peer->getAddress()>>24&0xff, event->peer->getAddress()>>16&0xff, event->peer->getAddress()>>8&0xff, event->peer->getAddress()&0xff, event->data.c_str());
|
||||
Log::debug("NetworkManager", "Message, Sender : %i.%i.%i.%i, message = \"%s\"", event->peer->getAddress()>>24&0xff, event->peer->getAddress()>>16&0xff, event->peer->getAddress()>>8&0xff, event->peer->getAddress()&0xff, event->data.c_str());
|
||||
break;
|
||||
case EVENT_TYPE_DISCONNECTED:
|
||||
{
|
||||
Log::info("NetworkManager", "Somebody is now disconnected. There are now %lu peers.", m_peers.size());
|
||||
Log::info("NetworkManager", "Disconnected host: %i.%i.%i.%i:%i", event->peer->getAddress()>>24&0xff, event->peer->getAddress()>>16&0xff, event->peer->getAddress()>>8&0xff, event->peer->getAddress()&0xff,event->peer->getPort());
|
||||
Log::debug("NetworkManager", "Disconnected host: %i.%i.%i.%i:%i", event->peer->getAddress()>>24&0xff, event->peer->getAddress()>>16&0xff, event->peer->getAddress()>>8&0xff, event->peer->getAddress()&0xff,event->peer->getPort());
|
||||
// remove the peer:
|
||||
bool removed = false;
|
||||
for (unsigned int i = 0; i < m_peers.size(); i++)
|
||||
{
|
||||
Log::error("NetworkManager", "Saved : %ld, Sender : %ld", (long int)(m_peers[i]), (long int)(event->peer));
|
||||
if (m_peers[i] == event->peer && !removed) // remove only one
|
||||
{
|
||||
delete m_peers[i];
|
||||
m_peers.erase(m_peers.begin()+i, m_peers.begin()+i+1);
|
||||
Log::info("NetworkManager", "The peer has been removed from the Network Manager.");
|
||||
Log::verbose("NetworkManager", "The peer has been removed from the Network Manager.");
|
||||
removed = true;
|
||||
}
|
||||
else if (m_peers[i] == event->peer)
|
||||
@@ -115,11 +115,15 @@ void NetworkManager::notifyEvent(Event* event)
|
||||
}
|
||||
}
|
||||
if (!removed)
|
||||
Log::fatal("NetworkManager", "The peer that has been disconnected was not registered by the Network Manager.");
|
||||
Log::warn("NetworkManager", "The peer that has been disconnected was not registered by the Network Manager.");
|
||||
|
||||
Log::debug("NetworkManager", "Somebody is now disconnected. There are now %lu peers.", m_peers.size());
|
||||
|
||||
break;
|
||||
}
|
||||
case EVENT_TYPE_CONNECTED:
|
||||
Log::info("NetworkManager", "A client has just connected. There are now %lu peers.", m_peers.size() + 1);
|
||||
Log::debug("NetworkManager", "A client has just connected. There are now %lu peers.", m_peers.size() + 1);
|
||||
Log::verbose("NetworkManager", "Address of event->peer after connection : %ld", (long int)(event->peer));
|
||||
// create the new peer:
|
||||
m_peers.push_back(event->peer);
|
||||
break;
|
||||
|
||||
@@ -232,11 +232,13 @@ void ProtocolManager::protocolTerminated(ProtocolInfo protocol)
|
||||
void ProtocolManager::update()
|
||||
{
|
||||
// before updating, notice protocols that they have received information
|
||||
pthread_mutex_lock(&m_events_mutex); // secure threads
|
||||
int size = m_events_to_process.size();
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
pthread_mutex_lock(&m_events_mutex); // secure threads
|
||||
Event* event = m_events_to_process.back();
|
||||
m_events_to_process.pop_back();
|
||||
pthread_mutex_unlock(&m_events_mutex); // release the mutex
|
||||
|
||||
PROTOCOL_TYPE searchedProtocol = PROTOCOL_NONE;
|
||||
if (event->type == EVENT_TYPE_MESSAGE)
|
||||
@@ -255,9 +257,7 @@ void ProtocolManager::update()
|
||||
m_protocols[i].protocol->notifyEvent(event);
|
||||
}
|
||||
delete event;
|
||||
m_events_to_process.pop_back();
|
||||
}
|
||||
pthread_mutex_unlock(&m_events_mutex); // release the mutex
|
||||
|
||||
// now update all protocols
|
||||
pthread_mutex_lock(&m_protocols_mutex);
|
||||
|
||||
@@ -50,8 +50,7 @@ void ConnectToPeer::notifyEvent(Event* event)
|
||||
{
|
||||
if (event->type == EVENT_TYPE_CONNECTED)
|
||||
{
|
||||
Log::info("ConnectToPeer", "The Connect To Server protocol has\
|
||||
received an event notifying that he's connected to the peer.");
|
||||
Log::debug("ConnectToPeer", "Received event notifying peer connection.");
|
||||
m_state = CONNECTED; // we received a message, we are connected
|
||||
}
|
||||
}
|
||||
@@ -97,15 +96,6 @@ void ConnectToPeer::update()
|
||||
}
|
||||
break;
|
||||
case CONNECTING: // waiting the peer to connect
|
||||
{
|
||||
static double timer = 0;
|
||||
if (Time::getRealTime() > timer+5.0) // every 5 seconds
|
||||
{
|
||||
timer = Time::getRealTime();
|
||||
NetworkManager::getInstance()->connect(m_peer_address);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CONNECTED:
|
||||
{
|
||||
m_listener->requestTerminate( m_listener->getProtocol(m_current_protocol_id)); // kill the ping protocol because we're connected
|
||||
|
||||
@@ -64,7 +64,7 @@ void GetPeerAddress::update()
|
||||
TransportAddress* addr = static_cast<TransportAddress*>(m_callback_object);
|
||||
result->get("ip", &addr->ip);
|
||||
result->get("port", &addr->port);
|
||||
Log::info("GetPeerAddress", "Address gotten successfully.");
|
||||
Log::debug("GetPeerAddress", "Address gotten successfully.");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -97,7 +97,7 @@ void GetPublicAddress::update()
|
||||
bytes[19] = (uint8_t)(m_stun_tansaction_id[2]);
|
||||
bytes[20] = '\0';
|
||||
|
||||
Log::info("GetPublicAddress", "Querrying STUN server 132.177.123.6");
|
||||
Log::verbose("GetPublicAddress", "Querrying STUN server 132.177.123.6");
|
||||
unsigned int dst = (132<<24)+(177<<16)+(123<<8)+6;
|
||||
NetworkManager::getInstance()->setManualSocketsMode(true);
|
||||
NetworkManager::getInstance()->getHost()->sendRawPacket(bytes, 20, TransportAddress(dst, 3478));
|
||||
@@ -131,7 +131,7 @@ void GetPublicAddress::update()
|
||||
data[18] == (uint8_t)(m_stun_tansaction_id[2]>>8 ) &&
|
||||
data[19] == (uint8_t)(m_stun_tansaction_id[2] ))
|
||||
{
|
||||
Log::info("GetPublicAddress", "The STUN server responded with a valid answer");
|
||||
Log::verbose("GetPublicAddress", "The STUN server responded with a valid answer");
|
||||
int message_size = data[2]*256+data[3];
|
||||
|
||||
// parse the stun message now:
|
||||
@@ -182,7 +182,7 @@ void GetPublicAddress::update()
|
||||
// finished parsing, we know our public transport address
|
||||
if (valid)
|
||||
{
|
||||
Log::info("GetPublicAddress", "The public address has been found : %i.%i.%i.%i:%i", address>>24&0xff, address>>16&0xff, address>>8&0xff, address&0xff, port);
|
||||
Log::debug("GetPublicAddress", "The public address has been found : %i.%i.%i.%i:%i", address>>24&0xff, address>>16&0xff, address>>8&0xff, address&0xff, port);
|
||||
m_state = ADDRESS_KNOWN;
|
||||
NetworkManager::getInstance()->setManualSocketsMode(false);
|
||||
TransportAddress* addr = static_cast<TransportAddress*>(m_callback_object);
|
||||
|
||||
@@ -56,7 +56,7 @@ void HidePublicAddress::update()
|
||||
{
|
||||
if(rec_success == "yes")
|
||||
{
|
||||
Log::info("ShowPublicAddress", "Address hidden successfully.");
|
||||
Log::debug("ShowPublicAddress", "Address hidden successfully.");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -270,7 +270,7 @@ void ServerLobbyRoomProtocol::update()
|
||||
NetworkManager::getInstance()->setPublicAddress(m_public_address);
|
||||
m_current_protocol_id = m_listener->requestStart(new StartServer());
|
||||
m_state = LAUNCHING_SERVER;
|
||||
Log::info("ServerLobbyRoomProtocol", "Public address known.");
|
||||
Log::debug("ServerLobbyRoomProtocol", "Public address known.");
|
||||
}
|
||||
break;
|
||||
case LAUNCHING_SERVER:
|
||||
@@ -306,7 +306,7 @@ void ServerLobbyRoomProtocol::update()
|
||||
for (unsigned int i = 0; i < users_xml->getNumNodes(); i++)
|
||||
{
|
||||
users_xml->getNode(i)->get("id", &id);
|
||||
Log::info("ServerLobbyRoomProtocol", "User with id %d wants to connect.", id);
|
||||
Log::debug("ServerLobbyRoomProtocol", "User with id %d wants to connect.", id);
|
||||
m_incoming_peers_ids.push_back(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ void RequestConnection::update()
|
||||
{
|
||||
if (rec_success == "yes")
|
||||
{
|
||||
Log::info("RequestConnection", "Connection Request made successfully.");
|
||||
Log::debug("RequestConnection", "Connection Request made successfully.");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -60,7 +60,7 @@ void ShowPublicAddress::update()
|
||||
{
|
||||
if(rec_success == "yes")
|
||||
{
|
||||
Log::info("ShowPublicAddress", "Address shown successfully.");
|
||||
Log::debug("ShowPublicAddress", "Address shown successfully.");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -140,7 +140,7 @@ void STKHost::sendRawPacket(uint8_t* data, int length, TransportAddress dst)
|
||||
to.sin_addr.s_addr = htonl(dst.ip);
|
||||
|
||||
sendto(m_host->socket, (char*)data, length, 0,(sockaddr*)&to, to_len);
|
||||
printf("Raw packet sent to %u:%u\n", dst.ip, dst.port);
|
||||
Log::verbose("STKHost", "Raw packet sent to %u:%u\n", dst.ip, dst.port);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
@@ -52,7 +52,7 @@ bool STKPeer::connectToHost(STKHost* localhost, TransportAddress host, uint32_t
|
||||
Log::error("STKPeer", "Could not try to connect to server.\n");
|
||||
return false;
|
||||
}
|
||||
Log::info("STKPeer", "Connecting to %i.%i.%i.%i:%i.\n", (peer->address.host>>0)&0xff,(peer->address.host>>8)&0xff,(peer->address.host>>16)&0xff,(peer->address.host>>24)&0xff,peer->address.port);
|
||||
Log::verbose("STKPeer", "Connecting to %i.%i.%i.%i:%i.\nENetPeer address is %ld", (peer->address.host>>0)&0xff,(peer->address.host>>8)&0xff,(peer->address.host>>16)&0xff,(peer->address.host>>24)&0xff,peer->address.port, (long int)(peer));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ void STKPeer::disconnect()
|
||||
|
||||
void STKPeer::sendPacket(NetworkString const& data)
|
||||
{
|
||||
Log::info("STKPeer", "sending packet of size %d to %i.%i.%i.%i:%i", data.size(), (m_peer->address.host>>0)&0xff,(m_peer->address.host>>8)&0xff,(m_peer->address.host>>16)&0xff,(m_peer->address.host>>24)&0xff,m_peer->address.port);
|
||||
Log::verbose("STKPeer", "sending packet of size %d to %i.%i.%i.%i:%i", data.size(), (m_peer->address.host>>0)&0xff,(m_peer->address.host>>8)&0xff,(m_peer->address.host>>16)&0xff,(m_peer->address.host>>24)&0xff,m_peer->address.port);
|
||||
ENetPacket* packet = enet_packet_create(data.c_str(), data.size()+1,ENET_PACKET_FLAG_RELIABLE);
|
||||
|
||||
enet_peer_send(m_peer, 0, packet);
|
||||
|
||||
@@ -33,6 +33,7 @@ class STKPeer
|
||||
virtual void sendPacket(const NetworkString& data);
|
||||
|
||||
static bool connectToHost(STKHost* localhost, TransportAddress host, uint32_t channel_count, uint32_t data);
|
||||
|
||||
void disconnect();
|
||||
|
||||
bool isConnected() const;
|
||||
|
||||
@@ -82,7 +82,7 @@ std::string HTTPConnector::getPage()
|
||||
if(res != CURLE_OK)
|
||||
Log::error("online/http_functions", "curl_easy_perform() failed: \"%s\"", curl_easy_strerror(res));
|
||||
else
|
||||
Log::info("online/http_functions", "Received : \"%s\"", readBuffer.c_str());
|
||||
Log::verbose("online/http_functions", "Received : \"%s\"", readBuffer.c_str());
|
||||
m_parameters.clear();
|
||||
return readBuffer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user