rubidium42
3bd416bfdb
Change: [Console] Show help when passing invalid company number
2021-05-01 18:30:08 +02:00
Patric Stout
69118d063f
Change: use TCP for everything except for master-server and initial server 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-30 11:34:47 +02:00
rubidium42
a61696d6c5
Change: [Network] Encapsulate logic about the connection string to the network code ( #23 )
2021-04-29 20:12:11 +02:00
Patric Stout
be37a2cab8
Codechange: use NetworkAddress instead of two host/port variables where possible
...
This also means we no longer need last_host/last_port, but can
just use a single last_joined setting.
2021-04-29 20:12:11 +02:00
Patric Stout
31f1db2d3a
Change: no longer use UDP when entering the lobby of a server
...
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 20:18:53 +02:00
Patric Stout
cb2ef1ea4b
Codechange: move all NetworkGameInfo related functions to a single file
...
It currently was a bit scattered over the place. Part of
NetworkGameInfo is also the GRF Identifiers that goes with it.
2021-04-27 20:18:53 +02:00
rubidium42
cbad518bf3
Codechange: [Network] Do not leak os_abstraction.h via network_func
2021-04-27 18:17:34 +01:00
Patric Stout
5266359424
Feature: rework in-game Online Players GUI
...
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 21:43:58 +02:00
rubidium42
e1cebe0ea0
Add: [Network] Validate the client name server side, so no clients with invalid names can actually join
2021-04-24 08:02:54 +02:00
rubidium42
bfb0ab3e2f
Feature: [Network] Ensure players fill in a name instead of defaulting to "Player"
2021-04-24 08:02:54 +02:00
Patric Stout
31897eaa7d
Codechange: split ParseConnectionString into two functions
...
One also looks for a company, the other doesn't. There were more
uses of the latter than the first, leaving very weird code all
over the place.
2021-04-20 17:34:04 +02:00
Rubidium
ca6b9ad8b0
Change: move some things only relevant to UDP from network.cpp to network_udp.cpp
2021-04-12 21:10:21 +02:00
Patric Stout
62cdadb582
Change: move "give money" from client-list to company window
...
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:
f820543391
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.
2021-01-05 21:56:24 +01:00
Charles Pigott
860c270c73
Codechange: Replace assert_compile macro with static_assert
2020-12-27 10:55:42 +00:00
Jonathan G Rennison
0c5dc5d41e
Change: [Linkgraph] Pause the game when linkgraph jobs lag ( #6470 )
...
Check if the job is still running two date fract ticks before it is due
to join, and if so pause the game until its done.
When loading a game, check if the game would block immediately due to
a job which is scheduled to be joined within two date fract ticks,
and if so pause the game until its done.
This avoids the main thread being blocked on a thread join, which appears
to the user as if the game is unresponsive, as the UI does not repaint
and cannot be interacted with.
Show if pause is due to link graph job in status bar, update network
messages.
This does not apply for network clients.
2020-12-22 15:17:57 +01:00
Patric Stout
d15dc9f40f
Add: support for emscripten (play-OpenTTD-in-the-browser)
...
Emscripten compiles to WASM, which can be loaded via
HTML / JavaScript. This allows you to play OpenTTD inside a
browser.
Co-authored-by: milek7 <me@milek7.pl>
2020-12-15 15:46:39 +01:00
Quipyowert2
d1b7eb2de1
Codechange: Limit field width to avoid sscanf crash
2020-02-23 19:04:34 +00: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
e3c75a30ba
Fix: unused variable warnings
2019-12-21 20:13:03 +01: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
Henry Wilson
7c8e7c6b6e
Codechange: Use null pointer literal instead of the NULL macro
2019-04-10 23:22:20 +02:00
Michael Lutz
e804173595
Codechange: If something is a vector of strings, use a vector of strings instead of an AutoFreeSmallVector.
2019-04-09 22:45:15 +02: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
a690936ed7
Codechange: Replace SmallVector::Length() with std::vector::size()
2019-03-26 20:15:57 +00:00
peter1138
07de9d6c3f
Codechange: Use override keyword in networking classes.
2019-03-24 17:38:42 +00: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
Niels Martin Hansen
830ed6be61
Fix: Do not mangle tagged revision strings for network revision strings
2019-02-12 21:32:43 +00: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
rubidium
ff5c05c1b4
(svn r27400) -Fix [FS#6368] (r26449): when a dedicated server was paused with no clients the tick length was increased significantly, making any assumptions about the tick length used further down in the code are not true anymore. One of such assumptions was that one should readvertise every 15 minutes worth of original ticks, but due to the lengthening this timeframe would be more like 45-60 minutes. Now we'll take the operating system's millisecond counter instead
2015-09-19 16:49:46 +00:00
frosch
e2f5081f40
(svn r26788) -Add: Desync replay option to skip/replay failed commands
2014-09-07 14:21:16 +00:00
frosch
937265d6d6
(svn r26786) -Fix: Also replay failed commands.
2014-09-07 13:36:18 +00:00
rubidium
e64249446d
(svn r26577) -Fix [FS#6001]: [Network] Client of non-dedicated server was not correctly put into the first company for all state variables
2014-05-11 13:07:36 +00:00
rubidium
9ed12b0f07
(svn r26509) -Codechange: replace strdup with stredup (the latter ensures the return is not NULL)
2014-04-25 15:40:32 +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
3e9c10f9e1
(svn r26449) -Add: Allow more sound sleep for dedicated servers when there's nothing to do and nobody paying attention
2014-04-08 20:19:41 +00:00
rubidium
c40f281545
(svn r25997) -Codechange: make it slightly more clear what ports are coming from where in the debug output when listening
2013-11-14 19:31:10 +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
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
531e501b5a
(svn r23751) -Codechange: rename NetworkUDPGameLoop to a more descriptive name, and move the UDP specific bits to network_udp
2012-01-04 22:08:43 +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
55de5d336c
(svn r23618) -Add: ScriptGame::Pause, ScriptGame::Unpause, and ScriptGame::GetLandscape (GameScript only)
2011-12-19 20:58:59 +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
998bbde49e
(svn r22934) -Fix [FS#4771]: prevent authentication bypass for the admin port when a new game is started
2011-09-15 18:28:39 +00:00
frosch
6bb33acc0d
(svn r22738) -Fix [FS#4722] (r21854): Setting company passwords via the GUI on servers (including starting a company with the default password) failed, so no client could join.
2011-08-13 08:32:55 +00:00
rubidium
36e887591b
(svn r22696) -Fix: don't requery the servers when the server list window isn't opened
2011-07-30 10:44:58 +00:00
rubidium
c4aa943aaa
(svn r22424) -Document: some more bits
2011-05-05 16:24:48 +00:00
rubidium
944a5cb7aa
(svn r22423) -Document: some network stuff
2011-05-04 20:24:23 +00:00
rubidium
2cae0cd54c
(svn r22368) -Codechange: move the IP address field from the ClientInfo to ClientSocket
2011-04-22 16:03:48 +00:00
rubidium
f1d0c1a746
(svn r22363) -Codechange: NetworkFindClientStateFromClientID -> NetworkClientSocket::GetByClientID
2011-04-22 15:54:42 +00:00
rubidium
bc9a803ea9
(svn r22362) -Codechange: NetworkFindClientInfoFromClientID -> NetworkClientInfo::GetByClientID
2011-04-22 15:54:16 +00:00
smatz
756cc6cf65
(svn r22116) -Codechange: use PoolBase::Clean() at more places
2011-02-19 23:05:47 +00:00
rubidium
05a846a574
(svn r22032) -Codechange: add some asserts to verify we don't allocate too many NetworkClientSockets/Infos
2011-02-08 21:47:10 +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
e54a1f6721
(svn r21853) -Codechange: HashCurrentCompanyPassword is only used by servers, so move it to network_server.* (dihedral)
2011-01-19 16:37:06 +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
rubidium
b149fcd127
(svn r21513) -Feature [FS#532]: make the chat message timeout user configurable
2010-12-14 15:00:43 +00:00
rubidium
e68efb9e71
(svn r21512) -Change/Feature: make the delay of the chat messages timing out unrelated to the number of passed game days, i.e. don't stop aging chat messages when the server is paused
2010-12-14 14:57:51 +00:00
rubidium
cf61c2f11f
(svn r21412) -Codechange: limit company name by amount of characters, not bytes
2010-12-05 22:24:50 +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
bb02e30a37
(svn r21308) -Fix [FS#4262] (r20933-ish): crash upon desync
2010-11-23 23:59:24 +00:00
rubidium
30637a8340
(svn r21157) -Codechange: remove information about the text direction out of the language "list"
2010-11-13 09:56:25 +00:00
rubidium
f24c91c487
(svn r21030) -Codechange: move ClientStatus into the network server socket class
2010-10-24 20:07:32 +00:00
rubidium
87edf2524d
(svn r21004) -Fix [FS#3746]: chat/console messages got sometimes messed up due to LTR names in RTL translations and vice-versa
2010-10-21 20:12:48 +00:00
rubidium
44a03d0478
(svn r20988) -Fix [FS#4167]: no need to send packets and possibly get the connection closed when the next call also tries to send the packets and then closes the connection. Especially if the former frees a structure that the latter assumes to be still there
2010-10-18 10:44:51 +00:00
rubidium
9a5e272195
(svn r20978) -Fix (r20963): MSVC seems to be complaining more than GCC once again :)
2010-10-17 17:52:12 +00:00
rubidium
7cc8a363d8
(svn r20966) -Change: enable remote administration sockets (parts by Yexo and dihedral)
2010-10-17 17:35:42 +00:00
rubidium
234bee0858
(svn r20938) -Codechange: make the code for listening on a socket (more) reusable
2010-10-15 21:56:06 +00:00
rubidium
f712055002
(svn r20936) -Codechange: make server side packet sending methods class methods
2010-10-15 20:25:07 +00:00
rubidium
9858d699a3
(svn r20935) -Codechange: only let the server side use a pool of connected sockets
2010-10-15 19:58:56 +00:00
rubidium
bda26d03b5
(svn r20934) -Codechange: move NetworkGetClientName to the server's socket
2010-10-15 19:35:08 +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
76579df240
(svn r20930) -Codechange: simplify the socket handler allocation
2010-10-15 18:45:56 +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
alberth
fa6203fdc3
(svn r20678) -Codechange: Remove unused NetworkFindClientInfoFromIndex(), NetworkFindClientInfoFromIP().
2010-08-29 12:37:49 +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
e1d35cba6d
(svn r20497) -Fix [FS#3960]: non-dedicated servers failing to load a game caused the introgame to be the server's game causing desyncs when people tried to join
2010-08-15 11:58:20 +00:00
frosch
4bd32799f1
(svn r20286) -Codechange: Unify end of doxygen comments.
2010-08-01 19:44:49 +00:00
frosch
ed4f806f1d
(svn r20283) -Codechange: Unify start of doygen comments.
2010-08-01 19:22:34 +00:00
rubidium
e356cb9405
(svn r20281) -Codechange: unify case scope closure + break coding style
2010-08-01 18:53:30 +00:00
alberth
be6c058424
(svn r20211) -Codechange: Indented code should have curly braces around it.
2010-07-24 10:14:39 +00:00
rubidium
52b211f939
(svn r19869) -Fix [FS#3819]: when a connection gets lost and a game with AIs was loaded the client might crash due to the AIs not being loaded while the game loop is executed
2010-05-20 18:54:14 +00:00
rubidium
d2ed777fa5
(svn r19619) -Fix (r19618): [desync debug] inserting the "join" pause could cause a crash as some command data was not properly initialised
2010-04-13 18:40:47 +00:00
rubidium
23190b8952
(svn r19617) -Fix [desync debug]: log the sync state only once per day, not multiple times when paused with _date_fract = 0
...
-Change [desync debug]: check the sync state from the command stream and make sure no unknown input is encountered
2010-04-13 17:36:19 +00:00
smatz
7f3844d3aa
(svn r19610) -Codechange: rename STATUS_AUTH to STATUS_AUTHORIZED
2010-04-11 17:32:14 +00:00
smatz
43015ad79b
(svn r19609) -Fix: do not print 'Connection lost' message for clients who failed to enter correct password
2010-04-11 17:25:44 +00:00
rubidium
5c7aaf11ba
(svn r19602) -Codechange: add the name of the command to the desync logs
2010-04-11 10:11:26 +00:00
rubidium
9b7d71699d
(svn r19601) -Fix: make the desync replay parse the "whole" string instead of everything up to the first space; make it log the sync state too
2010-04-11 09:54:44 +00:00
rubidium
465e3be105
(svn r19593) -Codechange: improve loading/executing the desync logs
2010-04-09 17:08:44 +00:00
rubidium
d8baa1342c
(svn r19589) -Change: add some more useful information to the desync log and unify the formatting
2010-04-08 21:14:49 +00:00