diff --git a/Source/Core/DolphinWX/Src/NetSockets.cpp b/Source/Core/DolphinWX/Src/NetSockets.cpp index 46689ff593..f5a2374b8f 100644 --- a/Source/Core/DolphinWX/Src/NetSockets.cpp +++ b/Source/Core/DolphinWX/Src/NetSockets.cpp @@ -103,9 +103,7 @@ void *ServerSide::Entry() for (char i = 0; i < nbSocketReady; ++i) { m_CriticalSection.Enter(); - sf::SocketTCP Socket = m_selector.GetSocketReady(i); - if (Socket == m_socket) { // Incoming connection @@ -134,7 +132,6 @@ void *ServerSide::Entry() // Add it to the selector m_selector.Add(Incoming); Event->SendEvent(HOST_NEWPLAYER); - m_numplayers++; } else @@ -264,10 +261,16 @@ bool ServerSide::SyncValues(unsigned char socketnb, sf::IPAddress Address) { // Test UDP Socket Receive, 2s timeout if (!RecvT(m_socketUDP, (char*)&init_number, 1, received, 2)) + { + ERROR_LOG(NETPLAY,"Connection to client timed out or closed"); errorUDP = true; + } } else + { + ERROR_LOG(NETPLAY,"Failed to send info! closing connection!"); errorUDP = true; + } // Check if the client has the game Socket.Receive((char *)&init_number, 1, received); @@ -293,12 +296,12 @@ bool ServerSide::SyncValues(unsigned char socketnb, sf::IPAddress Address) m_client[i].socket.Send(m_client[socketnb].nick.c_str(), buffer_size + 1); } } - - Event->AppendText( wxString::Format(wxT("*Connection established to %s (%s:%d)\n"), - m_client[socketnb].nick.c_str(), Address.ToString().c_str(), m_client[m_numplayers].port) ); + Event->AppendText( wxString::FromAscii((wxT("*Connection established to %s (%s:%d)\n"), + m_client[socketnb].nick.c_str(), Address.ToString().c_str(), m_client[m_numplayers].port)) ); if (init_number != 0x1F) // Not Found - for (int i = 0; i < 4; i++) + //for (int i = 0; i < 4; i++) + //note for sl1nk3 : what is that for doing there? Event->AppendText(_("WARNING : Game Not Found on Client Side !\n")); // UDP connecton successful @@ -405,12 +408,14 @@ void *ClientSide::Entry() unsigned char value; size_t val_sz; m_socket.Receive((char *)&value, 1, val_sz); - // TODO : fix it. for some odd reason value is 1 instead of 16 making the connection "not successfull" if (value == 0x16) // UDP connection successful { Event->AppendText(_("Connection successful !\n")); - Event->AppendText( wxString::Format(wxT("*Connection established to %s (%s)\n*Game is : %s\n"), - m_hostnick.c_str(), m_addr.c_str(), m_selectedgame.c_str() ) ); + // note by DacoTaco : i hate to do this... + // TODO : make it better. old wxString::Format method crashed for some odd reason + std::string temp = "*Connection established to " + m_hostnick + "(" + m_addr + ")\n*Game is : " + + m_selectedgame + "\n "; + Event->AppendText( wxString::FromAscii( temp.c_str() ) ); } else { @@ -503,6 +508,8 @@ bool ClientSide::SyncValues() m_socket.Receive((char *)&m_netmodel, 4, recv_size); // Send client's UDP Port + // TODO : fix port sending. it sends the set port in the main window. not the actual using port + // when checked to use random this will , ofcourse , send wrong port m_socket.Send((const char *)&m_port, sizeof(short)); // Send client's nickname @@ -528,7 +535,10 @@ bool ClientSide::SyncValues() { // Test UDP Socket Receive, 2s timeout if (!RecvT(m_socketUDP, (char*)&byterecv, 1, recv_size, 2)) + { errorUDP = true; + ERROR_LOG(NETPLAY,"Connection Timed Out or closed"); + } } else errorUDP = true; diff --git a/Source/Core/DolphinWX/Src/NetWindow.cpp b/Source/Core/DolphinWX/Src/NetWindow.cpp index 5755d090a1..e1806e8f30 100644 --- a/Source/Core/DolphinWX/Src/NetWindow.cpp +++ b/Source/Core/DolphinWX/Src/NetWindow.cpp @@ -360,9 +360,7 @@ void NetPlay::UpdateNetWindow(bool update_infos, wxString infos) { m_critical.Enter(); //m_Game_str->SetLabel(wxString::Format(wxT(" Game : %s"), m_selectedGame.c_str())); - //Note By Daco : i'd hate to make another variable... (they take up space :( ) - std::string temp = " Game : " + m_selectedGame; - m_Game_str->SetLabel(wxString::FromAscii( temp.c_str() )); + m_Game_str->SetLabel(wxString::FromAscii( ( wxT( "Game %s"), m_selectedGame.c_str() ))); m_critical.Leave(); } } @@ -459,7 +457,8 @@ void NetPlay::OnGUIEvent(wxCommandEvent& event) case ID_CHAT: { value = 0x30; - wxString chat_str = wxString::Format(wxT("> %s : %s\n"), m_nick.c_str(), m_Chat->GetValue().c_str()); + // TODO : there seems to be a random bug here that i can't reproduce... looked like a loop bug :/ + wxString chat_str = wxString::Format(wxT("> %s : %s\n"), wxString(m_nick.c_str(), wxConvUTF8).c_str() , m_Chat->GetValue().c_str() ); int chat_size = (int)chat_str.size(); // If there's no distant connection, we write but we don't send