Commit Graph

246 Commits

Author SHA1 Message Date
Patric Stout c288eba813
Fix: prevent clients making emergency saves twice if server disconnects (#8477)
This was clearly overlooked during the initial implementation.
2021-01-02 20:34:55 +01:00
Michael Lutz 65f65ad2ad Codechange: Convert some more FIO functions to take std::string. 2020-12-27 13:19:25 +01:00
Charles Pigott 860c270c73 Codechange: Replace assert_compile macro with static_assert 2020-12-27 10:55:42 +00:00
Pavel Stupnikov d989fb516b
Change: send network error to the server before making an emergency save (#8387) 2020-12-16 21:23:12 +01:00
Bjarni Thor 5880f1479f Feature #7756: Allow server to supply a reason to kicked/banned clients
This commit adds the missing feature of allowing the server owner to
    provide a reason for kicking/banning a client, which the client sees in
    a pop-up window after being kicked. The implementation extends the
    network protocol by adding a new network action called
    NETWORK_ACTION_KICKED that is capable of having an error string, unlike
    the other network error packages.  Additionally, the kick function
    broadcasts a message to all clients about the kicked client and the
    reason for the kick.
2020-02-04 22:17:39 +00:00
glx 41232f18c1 Codechange: Replace network related FOR_ALL with range-based for loops 2019-12-21 20:13:03 +01:00
S. D. Cloudt 13cc8a0cee Cleanup: Removed SVN headers 2019-11-10 17:59:20 +00:00
Charles Pigott 5b34c8019f Codechange: Remove Company/OwnerByte types 2019-04-29 17:40:22 +01:00
Henry Wilson 7c8e7c6b6e Codechange: Use null pointer literal instead of the NULL macro 2019-04-10 23:22:20 +02:00
Michael Lutz 8b1880187a Remove: AutoFreeSmallVector.
The last use was for storing a list of memory blocks. As the way these lists are accessed is very
specific, it is easier to just write an explicit destructor instead of trying to exactly match the behaviour.
2019-04-09 22:45:15 +02:00
Michael Lutz ae748166d0 Codechange: Use platform independent C++11 function for sleeping on a thread. 2019-04-06 11:27:39 +02:00
Henry Wilson cc62f4163f Cleanup: Remove unused size template parameters from SmallMap and Auto[Free|Delete]SmallVector 2019-03-26 20:15:57 +00:00
Henry Wilson ab711e6942 Codechange: Replaced SmallVector::[Begin|End]() with std alternatives 2019-03-26 20:15:57 +00:00
Henry Wilson a0f36a50e6 Codechange: Replaced SmallVector::Append() with std::vector::[push|emplace]_back() 2019-03-26 20:15:57 +00:00
Henry Wilson af7d9020a1 Codechange: Use override specifer for overriding member declarations
This is a C++11 feature that allows the compiler to check that a virtual
member declaration overrides a base-class member with the same signature.

Also src/blitter/32bpp_anim_sse4.hpp +38 is no longer erroneously marked
as virtual despite being a template.
2019-03-24 16:10:04 +01:00
Patric Stout e3c639a09f Remove: ENABLE_NETWORK switch
This switch has been a pain for years. Often disabling broke
compilation, as no developer compiles OpenTTD without, neither do
any of our official binaries.

Additionaly, it has grown so hugely in our codebase, that it
clearly shows that the current solution was a poor one. 350+
instances of "#ifdef ENABLE_NETWORK" were in the code, of which
only ~30 in the networking code itself. The rest were all around
the code to do the right thing, from GUI to NewGRF.

A more proper solution would be to stub all the functions, and
make sure the rest of the code can simply assume network is
available. This was also partially done, and most variables were
correct if networking was disabled. Despite that, often the #ifdefs
were still used.

With the recent removal of DOS, there is also no platform anymore
which we support where networking isn't working out-of-the-box.

All in all, it is time to remove the ENABLE_NETWORK switch. No
replacement is planned, but if you feel we really need this option,
we welcome any Pull Request which implements this in a way that
doesn't crawl through the code like this diff shows we used to.
2019-03-20 19:24:55 +01:00
SamuXarick cdb6dbad85 Cleanup: Remove repeated network error message on connection timeout. (#7327) 2019-03-07 18:16:52 +00:00
Niels Martin Hansen c61acc7fc1 Fix #7280: Save in the right location on desync and server timeout 2019-03-03 12:12:32 +01:00
glx 8e7fe3973f Add: CompanyCtrlAction enum for CMD_COMPANY_CTRL actions 2019-02-04 21:08:36 +01:00
Niels Martin Hansen 5f8354f358 Change: Make a shortened network revision string for use in server queries 2019-02-03 18:00:16 +01:00
Niels Martin Hansen 4fb76db42f Feature #986: Automatic save when losing connection to a network game 2018-06-23 15:22:31 +02:00
frosch b4b98e5165 (svn r27893) -Codechange: Use fallthrough attribute. (LordAro) 2017-08-13 18:38:42 +00:00
alberth 0adfb1ac6f (svn r27653) -Fix(r27647): Rename FileOperation enum and values to SaveLoadOperation to avoid nameclash with windows compiler toolkit. 2016-09-04 16:06:50 +00:00
alberth 597380e099 (svn r27650) -Codechange: Replace SaveOrLoadMode by FileOperation and DetailedFileType. 2016-09-04 12:57:43 +00:00
rubidium d534c80e94 (svn r27020) -Cleanup: some coding style consistency improvements (mostly spaces) 2014-10-15 18:31:37 +00:00
rubidium 160ad31028 (svn r26488) -Codechange: perform the appropriate length checks when getting a client name 2014-04-23 21:19:54 +00:00
rubidium 5b82822c12 (svn r26486) -Codechange: replace a number of snprintfs with seprintf 2014-04-23 21:12:09 +00:00
rubidium 0463dbdc9e (svn r26482) -Codechange: add an include that allows us to undefine/redefine "unsafe" functions to prevent them from being used, and thus having to care about certain aspects of their return values 2014-04-23 20:13:33 +00:00
planetmaker c24374f99c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow) 2013-01-08 22:46:42 +00:00
rubidium 4f62472fd9 (svn r23817) -Fix [FS#4962]: desync due to different NewGRF version. So reduce the chance that it happens significantly with betas/RCs/nightlies by doing the same as is done for stable releases: check the NewGRF version of server vs client.
Previously this check was not done for nightlies/betas/RCs due to missing versioning information in the source tarballs, but they have that for a while now. So just force the NewGRF version check for all versions, and remove the broken --revision configure option
2012-01-17 17:27:38 +00:00
yexo 5535261e13 (svn r23802) -Fix [FS#4968] (r23601): game lobby gui not updated when new company information becomes available 2012-01-15 12:56:13 +00:00
truebrain 6c7c02eb14 (svn r23780) -Fix [FS#4963] (r23764): also name the two new errors server-side. As extra, split up one of the errors in 3 errors, to be more specific what goes wrong. As cherry on top, make sure on all sides we can never again forget to add such entries on both sides, by introducing an assert_compile() 2012-01-09 21:22:48 +00:00
rubidium bddfcaef95 (svn r23764) -Fix [FS#4955]: make default timeouts for certain states lower and configurable 2012-01-06 21:49:06 +00:00
rubidium 6d6be50ae0 (svn r23740) -Codechange: remove some 300 unneeded includes from the .cpp files 2012-01-03 21:32:51 +00:00
truebrain 561b25d031 (svn r23601) -Fix: fix the conflict in window number 2011-12-19 20:50:21 +00:00
rubidium 2bf0fc3c5c (svn r23476) -Codechange: use the error queue to replace switch mode error strings, again making it possible to return multiple errors 2011-12-10 15:16:58 +00:00
rubidium 420d358fef (svn r23475) -Codechange: queue critical error messages, so when multiple happen you won't miss any 2011-12-10 15:14:11 +00:00
rubidium 58423b26d1 (svn r23474) -Codechange: move the declaration error related functions to error.h 2011-12-10 13:54:10 +00:00
rubidium f6b0561cd8 (svn r22805) -Codechange: move use of magic number for version checking to more logical location 2011-08-21 18:57:45 +00:00
rubidium 944a5cb7aa (svn r22423) -Document: some network stuff 2011-05-04 20:24:23 +00:00
rubidium 2e572b98de (svn r22400) -Codechange: replace some defines in the tcp/game code so doxygen can create better documentation 2011-05-01 11:30:03 +00:00
rubidium c2ac411e69 (svn r22387) -Fix-ish [FS#4601]: Windows' recv seems to return "graceful closed" before having passed the remaining buffer which causes OpenTTD to think all connections are "incorrectly" terminated, i.e. without the "I'm leaving" packet from the client. So let the client wait a tiny bit after sending the "I'm leaving" packet and before gracefully closing the connection 2011-04-30 17:41:14 +00:00
rubidium 1c419d99bc (svn r22364) -Codechange: don't show the (unknown) client address in the client list at clients 2011-04-22 15:57:05 +00:00
rubidium bc9a803ea9 (svn r22362) -Codechange: NetworkFindClientInfoFromClientID -> NetworkClientInfo::GetByClientID 2011-04-22 15:54:16 +00:00
rubidium d1a50a01b4 (svn r22308) -Fix [FS#4574]: waiting on a server could kick the client, or rather the client would kick itself due to an unexpected packet 2011-04-09 21:52:38 +00:00
terkhen 6e641777b1 (svn r22154) -Fix [FS#4529]: _current_company was modified when moving a client to spectators, causing issues in bankruptcy (Rubidium) 2011-02-27 11:38:28 +00:00
rubidium 1dc5ba2210 (svn r22063) -Change: make the "has network" check also check whether the client is actually fully connected 2011-02-11 22:10:10 +00:00
rubidium 537bd8a429 (svn r22031) -Fix: bad servers could crash a client 2011-02-08 21:45:38 +00:00
rubidium 7eba2bf4d3 (svn r21890) -Cleanup: remove some unneeded includes 2011-01-22 14:52:20 +00:00
smatz 656caf16db (svn r21875) -Codechange: indentation of some comments was wrong 2011-01-21 01:38:30 +00:00
rubidium 795a528328 (svn r21854) -Codechange: refactor the password setting methods to make it possible to change the password of other companies (on the server) 2011-01-19 16:47:40 +00:00
rubidium e95718bf43 (svn r21852) -Codechange: generalise GenerateCompanyPasswordHash (dihedral) 2011-01-19 16:35:11 +00:00
rubidium c9609bbbc2 (svn r21851) -Codechange: rename NetworkClientSetPassword to NetworkClientSetCompanyPassword (dihedral) 2011-01-19 16:32:23 +00:00
rubidium a82118f360 (svn r21850) -Codechange: move password hashing to a more general location (dihedral) 2011-01-19 16:30:09 +00:00
rubidium b25cf57542 (svn r21701) -Codechange: ConsoleColour = TextColour, so make it that way and remove some unneeded casts 2011-01-03 12:01:41 +00:00
smatz c6a90361fc (svn r21693) -Codechange: no need to cast char[] to const uint8* 2011-01-01 21:41:01 +00:00
smatz 8b6a8a8935 (svn r21692) -Cleanup: remove unused extern declaration of HashCurrentCompanyPassword(), make it static 2011-01-01 21:39:52 +00:00
smatz 13456934b1 (svn r21691) -Codechange: make sure GenerateCompanyPasswordHash() behaves deterministically when/if the value of NETWORK_SERVER_ID_LENGTH is changed 2011-01-01 21:38:13 +00:00
smatz 666fbb28c2 (svn r21687) -Fix: verify the colour code we received from the server is valid 2011-01-01 17:02:29 +00:00
rubidium 5f25cdbbd5 (svn r21401) -Fix: ofcourse MSVC x64 has something to complain about... 2010-12-05 15:08:41 +00:00
rubidium ff8a01fbd2 (svn r21400) -Fix [FS#4284]: when loading a savegame takes more than 2 seconds locally, don't see that as lag of the server. Also increase the client side's lag thresholds a bit 2010-12-05 14:49:46 +00:00
rubidium 948cffc930 (svn r21397) -Change/Feature-ish: when getting a savegame from the server, just keep it in memory instead of writing it to a file 2010-12-05 14:44:31 +00:00
rubidium 69766049ce (svn r21396) -Codechange: rename SafeSaveOrLoad to SaveLoad (it only did load), and add support for (safe) loading with a LoadFilter 2010-12-05 14:43:10 +00:00
rubidium 97434f0e06 (svn r21392) -Change: prepare the network protocol for getting the file size later in the download process 2010-12-05 14:34:19 +00:00
rubidium 31c8ab0ed8 (svn r21361) -Change: make sure the client is listening, or rather receiving, our frames 2010-11-30 14:18:20 +00:00
rubidium b6c2216749 (svn r21358) -Codechange: make some network function names conform to coding style 2010-11-30 13:38:46 +00:00
rubidium 67f74559fc (svn r21334) -Fix [FS#4271]: make (more) sure that the savegame and transferred file are the same file and not different ones 2010-11-26 22:25:02 +00:00
rubidium 874abb2965 (svn r21256) -Fix [FS#4189]: Clients weren't always notified when the connection was lost 2010-11-19 15:55:53 +00:00
rubidium 8f9dcab09b (svn r21033) -Codechange: be more strict with the packets a client accepts at a given moment 2010-10-24 20:51:12 +00:00
rubidium 2cd67a51ac (svn r21029) -Codechange: split the map downloading packet + 3-state enum into 3 separate packets 2010-10-24 20:03:33 +00:00
rubidium 744bc2a614 (svn r21027) -Change/Fix: under some circumstances the file handle of the downloaded savegame wouldn't be closed, and validity of the handled wasn't checked in all cases 2010-10-24 16:40:02 +00:00
rubidium 3a1a915c9a (svn r21008) -Change: don't make client reconnect waiting time depend on the company; in coop games that does not spread clients at all, and most companies have a low number causing it not to be spread out either. Use the ClientID instead. Based on a patch by dihedral. 2010-10-22 14:41:26 +00:00
rubidium d71f590ed6 (svn r20993) -Codechange: some shuffling of game protocol packet description so they're documented in the "same" place as UDP, content and admin packets (dihedral) 2010-10-18 20:41:53 +00:00
frosch 3972c790c2 (svn r20957) -Codechange: Add another parameter to FindGRFConfig() to define search restrictions. 2010-10-17 12:12:13 +00:00
rubidium f555e6d72e (svn r20933) -Codechange: move some more client related methods and such to network_client.cpp 2010-10-15 19:33:08 +00:00
rubidium 7ba07d9573 (svn r20929) -Codechange: make NetworkCloseClient a class method 2010-10-15 18:42:52 +00:00
rubidium 515edee17c (svn r20925) -Codechange: make the client send commands have a slightly more sensible name 2010-10-15 14:29:13 +00:00
rubidium 0ca7e4e82e (svn r20924) -Codechange: make the game connection packet handling look more like UDP/content packet handling 2010-10-15 13:47:37 +00:00
rubidium 8eb07d097e (svn r20923) -Codechange: prepare creating sub-classes of NetworkClientSocket for server and client side 2010-10-15 13:22:00 +00:00
rubidium a4c6d07edc (svn r20553) -Feature: allow rate limiting of incoming commands 2010-08-19 08:59:36 +00:00
rubidium b594990071 (svn r20549) -Codechange: centralise the handling of the incoming commands (from clients and the server) 2010-08-18 22:40:17 +00:00
rubidium e356cb9405 (svn r20281) -Codechange: unify case scope closure + break coding style 2010-08-01 18:53:30 +00:00
terkhen 88ca183191 (svn r20239) -Doc: Give a common name to all fall throughs (FALL THROUGH). 2010-07-29 14:26:28 +00:00
rubidium 99a11badaf (svn r19996) -Codechange: Add NetworkVehicleType enum. 2010-06-19 16:37:56 +00:00
rubidium 2555522eab (svn r19809) -Codechange: make some unnamed network related enums/defines static const variables 2010-05-13 09:04:41 +00:00
rubidium 519c8007c8 (svn r19680) -Fix [FS#3775] (r19648): when joining a MP game all clients with company ID > 0 would be shown as if they were a spectator 2010-04-20 11:29:51 +00:00
smatz cd20724d20 (svn r19651) -Fix [FS#3745]: when a company is sold, move connected clients to spectators 2010-04-17 11:39:46 +00:00
rubidium b907dfdef8 (svn r19648) -Fix [FS#3760]: a client would not be properly moved when moved while joining, e.g. when entering a company's password. This caused the client to be in the wrong company (according to the rest of the clients) and the client being kicked on the first command 2010-04-17 10:52:26 +00:00
smatz 11d6e21c3a (svn r19607) -Codechange: use different packet types instead of packet subtypes 2010-04-11 17:17:12 +00:00
frosch 3926b62446 (svn r19283) -Fix (r19256): GRFConfig is not zeroed for non-dynamic construction. GRFIdentifier is sufficient though. 2010-02-27 20:26:42 +00:00
yexo a9c8dbc0a0 (svn r19255) -Codechange: encapsulate GRFIdentifier in GRFConfig instead of subclassing it 2010-02-25 20:05:31 +00:00
alberth 33a96b5ef3 (svn r19132) -Codechange: No need to end a line with ;;. 2010-02-14 16:31:35 +00:00
smatz 73ed81b1c7 (svn r19075) -Codechange: unhackify NetworkChangeCompanyPassword() 2010-02-10 15:17:27 +00:00
rubidium ab35d95b5a (svn r19072) -Fix [FS#3599]: possible read/write after free when the client triggered the server to close the connection 2010-02-09 23:49:19 +00:00
rubidium f608ad7baf (svn r18875) -Codechange: remove some unneeded bits from the network protocol and improve the naming of some variables 2010-01-21 11:17:40 +00:00
rubidium 82fc28f77f (svn r18809) -Codechange/Cleanup: remove unneeded headers from some files, if a header require a header make it include that header 2010-01-15 16:41:15 +00:00
rubidium 4ecb3eb33c (svn r18804) -Codechange: guard against binaries claiming to be compatible with a future (stable) release of OpenTTD. 2010-01-14 23:06:41 +00:00
rubidium ebe99fd493 (svn r18784) -Codechange: make NetworkSend_Command accept a company instead of using _local_company to pass that information, with the whole mess when you don't want the company to be _local_company. 2010-01-11 20:32:32 +00:00
rubidium 6a047d2316 (svn r18782) -Codechange: move the content of callback_table.cpp to network_command.cpp; it's only ever used there. 2010-01-11 20:00:14 +00:00
rubidium b00a5f1069 (svn r18330) -Cleanup: remove some unneeded includes 2009-11-28 20:35:25 +00:00