Patric Stout
8a2da49413
Remove: old server listing via Master Server
...
This removes all UDP from the game except for a local broadcast
to find LAN games.
So long Master Server, and tnx for all the fish!
2021-07-10 20:17:07 +02:00
Patric Stout
aa93d76223
Add: use Game Coordinator to get latest public server listing
2021-07-10 20:17:07 +02:00
Patric Stout
b1280fd17e
Add: use Game Coordinator to annouce public servers
2021-07-10 20:17:07 +02:00
Patric Stout
852e056d6f
Fix 9e32c618: network revision was always empty ( #9419 )
...
Shadowing the variable you intend to write in tends to do that ;)
2021-07-08 12:29:16 +02:00
Patric Stout
d38079d053
Fix f7e390bd: freeaddrinfo() is not guaranteed to handle a nullptr graceful ( #9404 )
2021-06-29 23:02:25 +02:00
Rubidium
f904aef176
Cleanup: use nullptr instead of 0 or NULL
2021-06-17 16:18:30 +02:00
rubidium42
a8b3afb236
Codechange: [Network] Use string_view for network compatability check
2021-06-15 06:13:00 +02:00
rubidium42
49dcf0c772
Codechange: [Network] Simplify constructing the HTTP request with fmt
2021-06-15 06:13:00 +02:00
rubidium42
53b4786037
Codechange: [Network] Let NetworkError return its std::string instead of a C-string
2021-06-15 06:13:00 +02:00
rubidium42
667301e3ec
Codechange: [Network] Make hostname/client IP return strings instead of a C-string
2021-06-15 06:13:00 +02:00
rubidium42
a91e29b656
Codechange: [Network] Let IsInNetmask use std::string
2021-06-15 06:13:00 +02:00
rubidium42
36705f1dc0
Codechange: [Network] Simplify formatting of network addresses to string
2021-06-15 06:13:00 +02:00
rubidium42
9e32c618f9
Fix: [Network] Determining GetNetworkRevisionString could overflow and underflow its buffer
...
Tagged releases are not affected
2021-06-14 23:05:18 +02:00
rubidium42
55a11710a6
Codechange: convert printf DEBUG statements to fmt Debug statements
2021-06-13 12:45:45 +02:00
rubidium42
845fded2a0
Fix #9361 , a2051ba: [Network] Off by one in CanWriteToPacket
...
Previously it did not allow writing a byte to a packet that was of size limit - 1 anymore.
2021-06-13 10:31:02 +02:00
Jonathan G Rennison
ad0e085ec7
Fix off by one error in Packet::CanWriteToPacket
2021-06-12 22:47:29 +01:00
Jonathan G Rennison
1002c6d9d2
Fix various compiler warnings
...
See: #267
2021-06-11 22:54:27 +01:00
Jonathan G Rennison
97d5982cb5
Fix various compiler warnings
...
See: #267
2021-06-11 00:39:24 +01:00
rubidium42
bb8fd00760
Cleanup: [Network] Remove C-string Recv_string and its last use
2021-06-10 21:53:19 +02:00
rubidium42
e2417193c9
Cleanup: [ContentInfo] Remove some functions that are not needed anymore
2021-06-10 20:09:44 +02:00
rubidium42
e3717ae903
Codechange: [ContentInfo] Use std::string instead of string buffers
2021-06-10 20:09:44 +02:00
rubidium42
df181bb641
Codechange: [ContentInfo] Use a vector for dependencies instead of custom allocation
2021-06-10 20:09:44 +02:00
rubidium42
9c424ab741
Codechange: [ContentInfo] Use StringList for tags instead of custom allocations
2021-06-10 20:09:44 +02:00
rubidium42
dfb89f3891
Codechange: [ContentInfo] Do not use memset/memcpy to make it possible to use vector/string
2021-06-10 20:09:44 +02:00
rubidium42
6bb3f034e4
Cleanup: [ContentInfo] Remove unused function
2021-06-10 20:09:44 +02:00
Rubidium
e227bbaff0
Cleanup: remove the old FIO slot functions
...
(cherry picked from commit fa6abe1646 )
2021-05-30 22:02:14 +01:00
rubidium42
8a918ce170
Codechange: [Network] Make admin name and version std::string
2021-05-30 10:15:22 +02:00
Patric Stout
ca9a7df752
Codechange: rename str_validate to StrMakeValid(InPlace) ( #9304 )
...
This to be more explicit the function changes the value, and not
returns yes/no.
2021-05-29 11:21:38 +02:00
milek7
7607277380
Fix: Network on Haiku, remove old code for BeOS
2021-05-24 08:56:18 +02:00
Jonathan G Rennison
66289bbda4
Log packet size parse failures in NetworkTCPSocketHandler
2021-05-21 01:42:31 +01:00
Jonathan G Rennison
6d58115458
Net: Log sent and received game packets with type and status names
2021-05-21 01:40:00 +01:00
Jonathan G Rennison
7677d2d01a
Fix mishandling of PACKET_SERVER_MAP_BEGIN queuing at server
...
This could result in broken packet framing in the TCP stream
2021-05-21 00:58:24 +01:00
Milek7
7ab6ab7400
Fix: missing <limits> include in network/core/packet.h ( #9123 )
...
(cherry picked from commit a341852cd5 )
2021-05-19 18:19:59 +01:00
rubidium42
44ca7d9377
Change: Use gender-neutral pronouns
2021-05-15 10:16:48 +02:00
Rubidium
bb9121dbd4
Fix: comparison of narrow type to wide type in loop (potential for infinite loops)
2021-05-15 10:16:10 +02:00
Rubidium
031e91de6e
Fix: [Network] Check on CIDR for netmask check considered everything valid
2021-05-15 10:16:10 +02:00
Jonathan G Rennison
f3e0507c54
Network: Include extra info in PACKET_CLIENT_ERROR packets
...
Log more details in server when PACKET_CLIENT_ERROR received
2021-05-14 20:31:31 +01:00
Jonathan G Rennison
e04218b528
Network: Log received packets at log level net=3
2021-05-14 19:34:15 +01:00
rubidium42
c73d64adf9
Codechange: move passwords in settings to std::string
2021-05-13 23:13:17 +02:00
Patric Stout
a403653805
Codechange: [Network] split CloseSocket and CloseConnection more clearly ( #9261 )
...
* 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-13 11:46:51 +02:00
Rubidium
187a3f20bf
Codechange: remove pointless close call due to resolving virtual functions 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-13 10:03:26 +02:00
Patric Stout
d7ce61f106
Fix #9255 : [Network] TCPConnecter crashes when hostname not found ( #9259 )
2021-05-13 08:13:48 +02:00
Patric Stout
b136e65cf9
Change: reworked the debug levels for network facility ( #9251 )
...
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-12 16:34:02 +02:00
Patric Stout
36e22f3a7b
Fix: [Network] clients leaving because of broken connections was not 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-11 12:26:16 +02:00
Patric Stout
8f4a612a7c
Change: reworded many of the network errors during connect/listen ( #9230 )
...
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-10 13:40:28 +02:00
Patric Stout
1b75a29d12
Fix: destroying a TCPConnecter that was still resolving made illegal writes
...
Basically, we should join the resolve thread before we destruct
the object.
2021-05-08 17:26:10 +02:00
Patric Stout
664a8c3e85
Codechange: move connection_string to private for TCPConnecter
...
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-08 17:26:10 +02:00
Patric Stout
f187708b3b
Fix f7e390bd: getpeername() doesn't work on closed sockets ( #9213 )
2021-05-08 11:57:41 +02:00
Patric Stout
f7e390bdc0
Feature: use Happy Eyeballs to make network connections (TCP-only) ( #9199 )
...
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-06 23:13:35 +02:00
rubidium42
f1dfa661a1
Codechange: [Network] Use std::string for NetworkGameInfo
2021-05-06 21:45:36 +02:00