summaryrefslogtreecommitdiff
path: root/src/network
AgeCommit message (Collapse)Author
2021-05-29Codechange: use separate pre and post callbacks for string settingsrubidium42
2021-05-29Codechange: split Write_ValidateSetting to get separate functions for making ↵rubidium42
strings valid and writing strings
2021-05-27Cleanup: remove unneeded temporary variables and castsrubidium42
2021-05-27Codechange: just pass the SettingDesc to SetSettingValue and remove ↵rubidium42
distinction between (non)company
2021-05-27Fix: do not hide parameter by local variable with the same namerubidium42
2021-05-24Fix: Network on Haiku, remove old code for BeOSmilek7
2021-05-17Codechange: [Network] Use C++ string functions to generate company password hashrubidium42
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-16Codechange: [Network] Let NetworkCompanyInfo use std::stringrubidium42
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-15Fix: comparison of narrow type to wide type in loop (potential for infinite ↵Rubidium
loops)
2021-05-15Fix: [Network] Check on CIDR for netmask check considered everything validRubidium
2021-05-14Codechange: [Network] Pass passwords as std::string to the network coderubidium42
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 client name in settings to std::stringrubidium42
2021-05-13Codechange: move server name/id in settings to std::stringrubidium42
2021-05-13Codechange: move hostnames in settings to std::stringrubidium42
2021-05-13Codechange: move passwords in settings to std::stringrubidium42
2021-05-13Change: further support for std::string in settingsrubidium42
2021-05-13Codechange: [Network] split CloseSocket and CloseConnection more clearly (#9261)Patric Stout
* Codechange: [Network] split CloseSocket and CloseConnection more clearly - CloseSocket now closes the actual OS socket. - CloseConnection frees up the resources to just before CloseSocket. - dtors call CloseSocket / CloseConnection where needed.
2021-05-13Codechange: remove pointless close call due to resolving virtual functions ↵Rubidium
statically in destructors In the destructors of many of the network related classes Close() is called, just like the top class in that hierarchy. However, due to virtual functions getting resolved statically in the destructor it would always call the empty Close() of the top class. Document the other cases where a virtual call is resolved statically.
2021-05-13Fix #9255: [Network] TCPConnecter crashes when hostname not found (#9259)Patric Stout
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] mark server as offline when no longer reachable (#9244)Patric Stout
2021-05-11Fix #9243: [Network] For a dedicated server use a fallback client and server ↵rubidium42
name Also warn when the client or server name has not been set and provide pointers on how to set them
2021-05-11Fix: [Network] don't rebuild the host-list during iterating the list (#9240)Patric Stout
Additionally, only rebuild it when we added a new manual server, as otherwise it is a noop anyway.
2021-05-11Fix: [Network] don't mark the last-joined server as manual (#9239)Patric Stout
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-10Fix: leaking file descriptorsRubidium
2021-05-10Change: reworded many of the network errors during connect/listen (#9230)Patric Stout
Also changed some levels to 0, as a failing listen() is something we should tell the user about. Hiding this information is a bit evil.
2021-05-09Fix: lobby window doesn't close if no connection could be established (#9223)Patric Stout
2021-05-08Fix: only query a manually added server if it isn't there yetPatric Stout
But always mark it as manually, no matter if it was there or not.
2021-05-08Fix: don't do a network disconnect between two queriesPatric Stout
This meant that on opening the Multiplayer window, if you had more than one server configured, it would one by one cancel all pending queries and send a new. Result: only the last server was updated.
2021-05-08Fix: destroying a TCPConnecter that was still resolving made illegal writesPatric Stout
Basically, we should join the resolve thread before we destruct the object.
2021-05-08Codechange: move connection_string to private for TCPConnecterPatric Stout
The most common case never needs access to it anymore. Make the one exception to this explicit. This means the fact that we store it is now an implementation detail.
2021-05-08Change: Use gender-neutral pronouns in console command messages (and ↵William Davis
comments) (#9203)
2021-05-08Fix f7e390bd: getpeername() doesn't work on closed sockets (#9213)Patric Stout
2021-05-08Codechange: [Network] Change ChatMessage's message to std::string and ↵rubidium42
simplify some code
2021-05-06Feature: use Happy Eyeballs to make network connections (TCP-only) (#9199)Patric Stout
Hostnames like "content.openttd.org" resolve into multiple IPv4 and IPv6. It is possible that either of the IPs is not working, either due to a poorly configured OS (having IPv6 but no valid route), broken network paths, or a service that is temporary unavailable. Instead of trying the IPs one by one, waiting for a 3s timeout between each, be a bit more like browsers, and stack attempts on top of each other with slight delays. This is called Happy Eyebells. Initially, try the first IPv6 address. If within 250ms there is no connection yet, try the first IPv4 address. 250ms later, try the second IPv6 address, etc, till all addresses are tried. If any connection is created, abort all the other (pending) connections and use the one that is created. If all fail 3s after the last connect(), trigger a timeout for all.
2021-05-06Codechange: [Network] Use std::string for NetworkGameInforubidium42
2021-05-06Codechange: [Network] Move connection string parsing away from C-stringsrubidium42
2021-05-06Codechange: [Network] Use std::string for NetworkAddress' host namerubidium42
2021-05-06Codechange: [Network] Use new/delete instead of calloc/free for NetworkGameListrubidium42