Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-05-05 | Codechange: [Network] Use a single NetworkServerGameInfo object at server ↵ | rubidium42 | |
side and serialize that for the clients | |||
2021-05-03 | Add: [Network] Reading std::string from a packet | rubidium42 | |
2021-05-03 | Add: [Network] Writing std::string to a packet | rubidium42 | |
2021-05-02 | Fix: [Network] Reading beyond the length of the server's ID when hashing ↵ | rubidium42 | |
password Under normal circumstances the server's ID is 32 characters excluding '\0', however this can be changed at the server. This ID is sent to the server for company name hashing. The client reads it into a statically allocated buffer of 33 bytes, but fills only the bytes it received from the server. However, the hash assumes all 33 bytes are set, thus potentially reading uninitialized data, or a part of the server ID of a previous game in the hashing routine. It is still reading from memory assigned to the server ID, so nothing bad happens, except that company passwords might not work correctly. | |||
2021-05-01 | Codechange: move some OS abstraction method implementations out of the header | rubidium42 | |
2021-05-01 | Codechange: encapsulate network error handling | rubidium42 | |
2021-05-01 | Codechange: rename NetworkError to ShowNetworkError | rubidium42 | |
2021-05-01 | Fix #6598: Prevent invalid memory accesses when abandoning a join from ↵ | rubidium42 | |
within a network game One could join a network game from within an already running network game. This would call a NetworkDisconnect, but keeps the UI alive. If, during that process the join is aborted, e.g. by cancelling on a password dialog, you would still be in your network game but also get shown the server list. Solve all the underlying problems by falling back to the main UI when (re)connecting to a(nother) server. | |||
2021-05-01 | Codechange: Move join information into a single structure | rubidium42 | |
2021-05-01 | Change: [Console] Show help when passing invalid company number | rubidium42 | |
2021-04-30 | Fix: Recalculate padding and minimum sizes when GUI or Font zoom is changed. | Peter Nelson | |
2021-04-30 | Change: use TCP for everything except for master-server and initial server ↵ | Patric Stout | |
scan (#9130) This means that pressing Refresh button and adding servers manually now uses TCP. The master-server and initial scan are still UDP as they will be replaced by Game Coordinator; no need to change this now. If we query a server that is too old, show a proper warning to the user informing him the server is too old. | |||
2021-04-29 | Change: [Network] Encapsulate logic about the connection string to the ↵ | rubidium42 | |
network code (#23) | |||
2021-04-29 | Codechange: use NetworkAddress instead of two host/port variables where possible | Patric Stout | |
This also means we no longer need last_host/last_port, but can just use a single last_joined setting. | |||
2021-04-29 | Codechange: use std::string over stack-based strings if possible | Patric Stout | |
2021-04-29 | Cleanup: remove write-only variable "hostname" in NetworkGameList | Patric Stout | |
2021-04-29 | Fix: [MinGW] Set minimum OS version to Windows XP (#9135) | Loïc Guilloux | |
2021-04-28 | Fix b3003dd1: swap SERVER_GAME_INFO with CLIENT_GAME_INFO (#9129) | Patric Stout | |
The idea is that if you query an older server that does not support this packet yet, the client receives an error. The assumption was that on every "illegal packet" the connection would be closed. This turns out to be false. Now CLIENT_GAME_INFO aligns with the old PACKET_CLIENT_NEWGRFS_CHECKED, which does a pre-check (which fails), and an error is sent back and the connection is closed. This is not a nice solution, but it is the best we got. | |||
2021-04-27 | Fix: missing <limits> include in network/core/packet.h (#9123) | Milek7 | |
2021-04-27 | Change: no longer use UDP when entering the lobby of a server | Patric Stout | |
The lobby of a server requested some parts via UDP and some via TCP. This is strictly seen fine, but for future extensions it is a lot easier if just one protocol is used. | |||
2021-04-27 | Codechange: refactor CheckGameCompatibility() from existing function | Patric Stout | |
Later commits use this function in other places too. | |||
2021-04-27 | Add: ability to retrieve game info from server over TCP | Patric Stout | |
2021-04-27 | Codechange: be explicit in pointer comparisons | Patric Stout | |
2021-04-27 | Codechange: move all NetworkGameInfo related functions to a single file | Patric Stout | |
It currently was a bit scattered over the place. Part of NetworkGameInfo is also the GRF Identifiers that goes with it. | |||
2021-04-27 | Change: [Network] lower TCP connect() timeout to 3s (#9112) | Patric Stout | |
Currently we use default OS timeout for TCP connections, which is around 30s. 99% of the users will never notice this, but there are a few cases where this is an issue: - If you have a broken IPv6 connection, using Content Service is first tried over IPv6. Only after 30s it times out and tries IPv4. Nobody is waiting for that 30s. - Upcoming STUN support has several methods of establishing a connection between client and server. This requires feedback from connect() to know if any method worked (they have to be tried one by one). With 30s, this would take a very long time. What is good to mention, is that there is no good value here. Any value will have edge-cases where the experience is suboptimal. But with 3s we support most of the stable connections, and if it fails, the user can just retry. On the other side of the spectrum, with 30s, it means the user has no possibility to use the service. So worst case we annoy a few users with them having the retry vs annoying a few users which have no means of resolving the situation. | |||
2021-04-27 | Cleanup: remove #ifdefs for compiling the old content server | rubidium42 | |
2021-04-27 | Codechange: [Network] Do not leak os_abstraction.h via fios.h | rubidium42 | |
2021-04-27 | Codechange: [Network] Do not leak os_abstraction.h via network_func | rubidium42 | |
2021-04-27 | Change: [Network] Use string error messages instead of numeric error numbers ↵ | rubidium42 | |
that need to be looked up | |||
2021-04-27 | Fix: [Network] errno and strerror do not handle network errors on Windows | rubidium42 | |
2021-04-26 | Fix 8a95fee4: Missing initialiser in Packet constructor | Charles Pigott | |
2021-04-25 | Change: [Network] Remove now defunct savegame transfer packet limiter | rubidium42 | |
2021-04-25 | Change: use 32 KiB packets to send requests to the content server | Rubidium | |
2021-04-25 | Change: use 32 KiB packets to transfer the savegame | Rubidium | |
2021-04-25 | Codechange: differentiate between UDP, TCP and compatibility MTU values | Rubidium | |
2021-04-25 | Codechange: allow different limits in packet sizes | Rubidium | |
2021-04-25 | Fix: [Network] Prevent stalling save game transfer when compression is slow | rubidium42 | |
2021-04-24 | Change: use icons to indicate you/host in Online Players GUI | Patric Stout | |
2021-04-24 | Add: move "New Company" inside the Online Players GUI | Patric Stout | |
2021-04-24 | Change: track hover position on Online Players GUI | Patric Stout | |
Especially if there are many players online, trying to chat with the right one can be a visual challenge. This can be solved by highlighting the row you are on. This visual cue is often enough for humans to find the right row. | |||
2021-04-24 | Add: ask for confirmation on admin actions in network games | Patric Stout | |
2021-04-24 | Add: admin menu for companies in multiplayer games | Patric Stout | |
You can now easily do: - a password reset (unlock) - remove an empty company (reset company) | |||
2021-04-24 | Feature: rework in-game Online Players GUI | Patric 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-24 | Codechange: use std::vector instead of a fixed size array for Packets | Rubidium | |
2021-04-24 | Codechange: add accessor for the packet type to Packet and make the internal ↵ | Rubidium | |
state of Packet private | |||
2021-04-24 | Codechange: remove public access to the next pointer in Packet | Rubidium | |
2021-04-24 | Codechange: encapsulate reading the size of a Packet | Rubidium | |
2021-04-24 | Codechange: encapsulate the logic about how many bytes can be sent from a ↵ | Rubidium | |
buffer in to a Packet | |||
2021-04-24 | Codechange: move the logic shrinking of the packets into the Packet itself | Rubidium | |
2021-04-24 | Codechange: encapsulate writing data from Packets into sockets/files/buffers ↵ | Rubidium | |
to prevent packet state modifications outside of the Packet |