diff --git a/src/network/protocols/client_lobby_room_protocol.cpp b/src/network/protocols/client_lobby_room_protocol.cpp index 90638b7c7..ef3779e45 100644 --- a/src/network/protocols/client_lobby_room_protocol.cpp +++ b/src/network/protocols/client_lobby_room_protocol.cpp @@ -147,6 +147,7 @@ void ClientLobbyRoomProtocol::newPlayer(Event* event) if (global_id == Online::CurrentUser::acquire()->getUserID()) { + Online::CurrentUser::release(); Log::error("ClientLobbyRoomProtocol", "The server notified me that i'm a new player in the room (not normal)."); } else if (m_setup->getProfile(race_id) == NULL || m_setup->getProfile(global_id) == NULL) @@ -218,6 +219,7 @@ void ClientLobbyRoomProtocol::connectionAccepted(Event* event) uint32_t global_id = event->data.gui32(8); if (global_id == Online::CurrentUser::acquire()->getUserID()) { + Online::CurrentUser::release(); Log::info("ClientLobbyRoomProtocol", "The server accepted the connection."); // self profile @@ -225,6 +227,7 @@ void ClientLobbyRoomProtocol::connectionAccepted(Event* event) profile->kart_name = ""; profile->race_id = event->data.gui8(1); profile->user_profile = Online::CurrentUser::acquire(); + Online::CurrentUser::release(); m_setup->addPlayer(profile); // connection token uint32_t token = event->data.gui32(3); diff --git a/src/network/protocols/get_peer_address.cpp b/src/network/protocols/get_peer_address.cpp index 77893cab6..449096c91 100644 --- a/src/network/protocols/get_peer_address.cpp +++ b/src/network/protocols/get_peer_address.cpp @@ -52,7 +52,9 @@ void GetPeerAddress::asynchronousUpdate() m_request = new Online::XMLRequest(); m_request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php"); m_request->setParameter("id",Online::CurrentUser::acquire()->getUserID()); + Online::CurrentUser::release(); m_request->setParameter("token",Online::CurrentUser::acquire()->getToken()); + Online::CurrentUser::release(); m_request->setParameter("peer_id",m_peer_id); m_request->setParameter("action","get"); diff --git a/src/network/protocols/hide_public_address.cpp b/src/network/protocols/hide_public_address.cpp index 8792cca10..65aaefa90 100644 --- a/src/network/protocols/hide_public_address.cpp +++ b/src/network/protocols/hide_public_address.cpp @@ -48,7 +48,9 @@ void HidePublicAddress::asynchronousUpdate() m_request = new Online::XMLRequest(); m_request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php"); m_request->setParameter("id",Online::CurrentUser::acquire()->getUserID()); + Online::CurrentUser::release(); m_request->setParameter("token",Online::CurrentUser::acquire()->getToken()); + Online::CurrentUser::release(); m_request->setParameter("action","unset"); Online::HTTPManager::get()->addRequest(m_request); diff --git a/src/network/protocols/quick_join_protocol.cpp b/src/network/protocols/quick_join_protocol.cpp index d4f3390b9..57b17601e 100644 --- a/src/network/protocols/quick_join_protocol.cpp +++ b/src/network/protocols/quick_join_protocol.cpp @@ -50,7 +50,9 @@ void QuickJoinProtocol::asynchronousUpdate() m_request = new Online::XMLRequest(); m_request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php"); m_request->setParameter("id",Online::CurrentUser::acquire()->getUserID()); + Online::CurrentUser::release(); m_request->setParameter("token",Online::CurrentUser::acquire()->getToken()); + Online::CurrentUser::release(); m_request->setParameter("action","quick-join"); Online::HTTPManager::get()->addRequest(m_request); diff --git a/src/network/protocols/request_connection.cpp b/src/network/protocols/request_connection.cpp index b7f018229..acd5e4cf7 100644 --- a/src/network/protocols/request_connection.cpp +++ b/src/network/protocols/request_connection.cpp @@ -50,7 +50,9 @@ void RequestConnection::asynchronousUpdate() m_request = new Online::XMLRequest(); m_request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php"); m_request->setParameter("id",Online::CurrentUser::acquire()->getUserID()); + Online::CurrentUser::release(); m_request->setParameter("token",Online::CurrentUser::acquire()->getToken()); + Online::CurrentUser::release(); m_request->setParameter("server_id",m_server_id); m_request->setParameter("action","request-connection"); diff --git a/src/network/protocols/server_lobby_room_protocol.cpp b/src/network/protocols/server_lobby_room_protocol.cpp index c8c6eca00..ea227325e 100644 --- a/src/network/protocols/server_lobby_room_protocol.cpp +++ b/src/network/protocols/server_lobby_room_protocol.cpp @@ -116,7 +116,9 @@ void ServerLobbyRoomProtocol::update() Online::XMLRequest* request = new Online::XMLRequest(); request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php"); request->setParameter("id",Online::CurrentUser::acquire()->getUserID()); + Online::CurrentUser::release(); request->setParameter("token",Online::CurrentUser::acquire()->getToken()); + Online::CurrentUser::release(); request->setParameter("address",addr.ip); request->setParameter("port",addr.port); request->setParameter("action","poll-connection-requests"); diff --git a/src/network/protocols/show_public_address.cpp b/src/network/protocols/show_public_address.cpp index bbf4a0338..143ab6af6 100644 --- a/src/network/protocols/show_public_address.cpp +++ b/src/network/protocols/show_public_address.cpp @@ -49,7 +49,9 @@ void ShowPublicAddress::asynchronousUpdate() m_request = new Online::XMLRequest(); m_request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php"); m_request->setParameter("id",Online::CurrentUser::acquire()->getUserID()); + Online::CurrentUser::release(); m_request->setParameter("token",Online::CurrentUser::acquire()->getToken()); + Online::CurrentUser::release(); m_request->setParameter("address",addr.ip); m_request->setParameter("port",addr.port); m_request->setParameter("action","set"); diff --git a/src/network/protocols/start_game_protocol.cpp b/src/network/protocols/start_game_protocol.cpp index 730b2ec74..dc3d410d5 100644 --- a/src/network/protocols/start_game_protocol.cpp +++ b/src/network/protocols/start_game_protocol.cpp @@ -104,6 +104,7 @@ void StartGameProtocol::update() for (unsigned int i = 0; i < players.size(); i++) { bool is_me = (players[i]->user_profile == Online::CurrentUser::acquire()); + Online::CurrentUser::release(); if (is_me) { NetworkPlayerProfile* profile = players[i]; @@ -128,6 +129,7 @@ void StartGameProtocol::update() for (unsigned int i = 0; i < players.size(); i++) { bool is_me = (players[i]->user_profile == Online::CurrentUser::acquire()); + Online::CurrentUser::release(); NetworkPlayerProfile* profile = players[i]; RemoteKartInfo rki(profile->race_id, profile->kart_name, profile->user_profile->getUserName(), profile->race_id, !is_me); diff --git a/src/network/protocols/start_server.cpp b/src/network/protocols/start_server.cpp index 029cd009a..6680a0708 100644 --- a/src/network/protocols/start_server.cpp +++ b/src/network/protocols/start_server.cpp @@ -48,7 +48,9 @@ void StartServer::asynchronousUpdate() m_request = new Online::XMLRequest(); m_request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php"); m_request->setParameter("id",Online::CurrentUser::acquire()->getUserID()); + Online::CurrentUser::release(); m_request->setParameter("token",Online::CurrentUser::acquire()->getToken()); + Online::CurrentUser::release(); m_request->setParameter("address",addr.ip); m_request->setParameter("port",addr.port); m_request->setParameter("max_players",UserConfigParams::m_server_max_players); diff --git a/src/network/protocols/stop_server.cpp b/src/network/protocols/stop_server.cpp index 69bf442c4..c9c9c94d9 100644 --- a/src/network/protocols/stop_server.cpp +++ b/src/network/protocols/stop_server.cpp @@ -48,7 +48,9 @@ void StopServer::asynchronousUpdate() m_request = new Online::XMLRequest(); m_request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php"); m_request->setParameter("id",Online::CurrentUser::acquire()->getUserID()); + Online::CurrentUser::release(); m_request->setParameter("token",Online::CurrentUser::acquire()->getToken()); + Online::CurrentUser::release(); m_request->setParameter("address",addr.ip); m_request->setParameter("port",addr.port); m_request->setParameter("action","stop-server"); diff --git a/src/online/current_user.cpp b/src/online/current_user.cpp index bfa9ea70c..72fc682b9 100644 --- a/src/online/current_user.cpp +++ b/src/online/current_user.cpp @@ -221,7 +221,6 @@ namespace Online{ request->setParameter("token", m_token); request->setParameter("id", m_id); request->setParameter("server_id", server_id); - HTTPManager::get()->addRequest(request); return request; } diff --git a/src/states_screens/online_screen.cpp b/src/states_screens/online_screen.cpp index 2577e3fa1..114db84a3 100644 --- a/src/states_screens/online_screen.cpp +++ b/src/states_screens/online_screen.cpp @@ -231,20 +231,33 @@ void OnlineScreen::eventCallback(Widget* widget, const std::string& name, const //FIXME temporary and the request join + join sequence should be placed in one method somewhere // refresh server list Online::ServersManager::RefreshRequest* request = ServersManager::acquire()->refreshRequest(); - //Online::HTTPManager::get()->synchronousRequest(request); - request->execute(); + ServersManager::release(); + Online::HTTPManager::get()->synchronousRequest(request); delete request; // select first one Server * server = ServersManager::acquire()->getQuickPlay(); - if (Online::CurrentUser::acquire()->requestServerJoin( server->getServerId())) + ServersManager::release(); + + Online::CurrentUser::ServerJoinRequest* request2 = Online::CurrentUser::acquire()->requestServerJoin( server->getServerId()); + Online::CurrentUser::release(); + if (request2) { - StateManager::get()->pushScreen(NetworkingLobby::getInstance()); + Online::HTTPManager::get()->synchronousRequest(request2); + if (request2->isSuccess()) + { + delete request; + StateManager::get()->pushScreen(NetworkingLobby::getInstance()); + ProtocolManager::getInstance()->requestStart(new ConnectToServer(server->getServerId())); + } + else + { + sfx_manager->quickSound( "anvil" ); + } } else { sfx_manager->quickSound( "anvil" ); } - ProtocolManager::getInstance()->requestStart(new ConnectToServer(server->getServerId())); } } // eventCallback