summaryrefslogtreecommitdiff
path: root/src/network/network_server.cpp
AgeCommit message (Collapse)Author
2021-06-10Cleanup: [Network] Remove C-string Recv_string and its last userubidium42
2021-06-03Fix ef991b17: server was trying to free() a packet created with "new ↵Patric Stout
CommandPacket()" (#9334)
2021-05-30Codechange: [Network] Use std::string to determine an unique name for clientsrubidium42
2021-05-30Codechange: [Network] Use std::string for server side logic of kicking and ↵rubidium42
banning clients
2021-05-30Codechange: [Network] Let server rcon result use std::stringrubidium42
2021-05-30Codechange: [Network] Let server changing a client name use std::stringrubidium42
2021-05-29Codechange: [Network] Use std::string in CommandPacketrubidium42
2021-05-16Codechange: [Network] Let NetworkClientInfo use std::stringrubidium42
2021-05-16Codechange: [Network] Use std::string to populate the client list for ↵rubidium42
company stats
2021-05-15Codechange: [Network] Let chat communication use std::stringrubidium42
2021-05-15Codechange: Use std::string GetString where convenientrubidium42
2021-05-15Codechange: [Network] Let NetworkTextMessage use std::stringrubidium42
2021-05-15Change: Use gender-neutral pronounsrubidium42
2021-05-14Codechange: [Network] Use std::string for the internal handling of ↵rubidium42
admin/rcon passwords
2021-05-14Codechange: [Network] Use std::string for the internal handling of server ↵rubidium42
passwords
2021-05-14Codechange: [Network] Use std::string for the internal handling of company ↵rubidium42
passwords
2021-05-14Codechange: [Network] Make company state password std::stringrubidium42
2021-05-13Codechange: move server name/id in settings to std::stringrubidium42
2021-05-13Codechange: move passwords in settings to std::stringrubidium42
2021-05-12Change: reworked the debug levels for network facility (#9251)Patric Stout
It now follows very simple rules: 0 - Fatal, user should know about this 1 - Error, but we are recovering 2 - Warning, wrong but okay if you don't know 3 - Info, information you might care about 4 - 5 - Debug #1 - High level debug messages 6 - Debug #2 - Low level debug messages 7 - Trace information
2021-05-11Fix: [Network] clients leaving because of broken connections was not ↵Patric Stout
broadcasted (#9238) The code mixed up "client has quit but we already told everyone" with "client lost connection, handle this". Split up those two signals: - CLIENT_QUIT means we told everyone and the connection is now dead - CONNECTION_LIST means we should tell everyone we lost a client
2021-05-08Change: Use gender-neutral pronouns in console command messages (and ↵William Davis
comments) (#9203)
2021-05-05Change: [Network] Update server's NetworkServerGameInfo only when neededrubidium42
Split the updating in a "static" version that only needs to be called when a new map is loaded or some settings are changed, and a "dynamic" version that updates everything that changes regularly such as the current game date or the number of spectators.
2021-05-05Codechange: [Network] Use a single NetworkServerGameInfo object at server ↵rubidium42
side and serialize that for the clients
2021-04-27Add: ability to retrieve game info from server over TCPPatric Stout
2021-04-27Codechange: move all NetworkGameInfo related functions to a single filePatric Stout
It currently was a bit scattered over the place. Part of NetworkGameInfo is also the GRF Identifiers that goes with it.
2021-04-25Change: [Network] Remove now defunct savegame transfer packet limiterrubidium42
2021-04-25Change: use 32 KiB packets to transfer the savegameRubidium
2021-04-25Fix: [Network] Prevent stalling save game transfer when compression is slowrubidium42
2021-04-24Add: admin menu for companies in multiplayer gamesPatric Stout
You can now easily do: - a password reset (unlock) - remove an empty company (reset company)
2021-04-24Feature: rework in-game Online Players GUIPatric Stout
The GUI now more clearly shows some basic information about the server you joined, your client name (and the ability to change it), and what players are in which company. It also contains useful buttons to press to join companies, chat with other people, and for admins to kick/ban people. Additionally, renamed "advertised" to "visibility"; this has to do with future additions, but also because it is more clear in wording.
2021-04-24Codechange: add accessor for the packet type to Packet and make the internal ↵Rubidium
state of Packet private
2021-04-24Codechange: remove public access to the next pointer in PacketRubidium
2021-04-24Codechange: encapsulate reading the size of a PacketRubidium
2021-04-24Codechange: encapsulate the logic about how many bytes can be sent from a ↵Rubidium
buffer in to a Packet
2021-04-24Add: [Network] Validate the client name server side, so no clients with ↵rubidium42
invalid names can actually join
2021-04-24Codechange: [Network] Introduce function to validate the client namerubidium42
2021-04-20Remove: "language" field from server/clientPatric Stout
The original idea was that people could find a server they could talk in their native language on. This isn't really used in that way. There are several reasons for removing this: - the client also sends his "language" to the server, but nothing is doing anything with this. - flags are a bad way to represent languages, and over the years we had several (rightfully) complaints about this. - most servers have their language set to "All", and prefix the servername with the language it is about. This is a much more efficient way to do the same. All in all, this feature should go back to the drawing board. Maybe it could work in another form, but this form is not it.
2021-04-06Fix: [Network] State conditions for sending client info/quit packets (#8959)Jonathan G Rennison
Use status >= STATUS_AUTHORIZED as the state criteria for all cases where updates about other clients are sent. This avoids the case where a client is informed that another client has joined but not informed when it later quits, resulting in stale entries in the client list window.
2021-02-28Fix: [Network] don't show "server doesn't respond" while in queuePatric Stout
Send all clients in the queue every game-day a packet that they are still in the queue.
2021-02-28Fix: [Network] send map to next client if current client disconnectsPatric Stout
Also terminate creating of the savegame, as the client is gone, there really is no need for that anymore.
2021-02-28Fix: [Network] also count the person downloading the map in the queuePatric Stout
Strictly seen, there are "N" people -waiting- in front of you in the queue, but it is nicer to show "N + 1" for the person that is currently downloading the map. Avoids it showing: "0 clients in front of you". That just feels a bit off.
2021-02-27Change: Improve console warnings on invalid network commands (#8753)Pavel Stupnikov
2021-02-27Codechange: [Network] replace _realtime_tick with std::chronoPatric Stout
2021-02-27Fix bddfcaef: don't tell twice that a client left because of a timeout etc ↵Patric Stout
(#8746) SendError() notifies all clients of the disconnect. This calls CloseConnection() at the end, which also notified the clients of the disconnect. Really no need to do it twice. The status NETWORK_RECV_STATUS_SERVER_ERROR is only set by SendError(), so in case that is the status, don't let ClientConnection() send another notification.
2021-01-08Codechange: Remove min/max functions in favour of STL variants (#8502)Charles Pigott
2021-01-05Change: move "give money" from client-list to company windowPatric Stout
This is a much better location for this button, as you send money from one company to another company, not from player to player. This is based on work done by JGRPP in: https://github.com/JGRennison/OpenTTD-patches/commit/f82054339124cc6b89c5f4f9dac2d9da62f0108b and surrounding commits, which took the work from estys: https://www.tt-forums.net/viewtopic.php?p=1183311#p1183311 We did modify it to fix several bugs and clean up the code while here anyway. The callback was removed, as it meant a modified client could prevent anyone from seeing money was transfered. The message is now generated in the command itself, making that impossible.
2020-12-27Codechange: Replace assert_compile macro with static_assertCharles Pigott
2020-07-09Fix: Thread unsafe use of SendPacket for PACKET_SERVER_MAP_SIZEJonathan G Rennison
NetworkTCPSocketHandler::SendPacket is not thread safe and may not be used concurrently from multiple threads without suitable locking
2020-02-08Fix #7976: Don't kick the client doing the rconglx