Commit Graph

52 Commits

Author SHA1 Message Date
Patric Stout 8fbf5bef60 Fix: workarounds for two emscripten bugs in the network stack 2020-12-15 15:46:39 +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
Jonathan G Rennison 1ac0d4a5b2 Fix: Thread unsafe use of NetworkAddress::GetAddressAsString
Remove static buffer form of NetworkAddress::GetAddressAsString.
This is used in multiple threads concurrently, and is not thread-safe.

Replace it with a form returning std::string.
2020-06-21 11:47:56 +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
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
frosch 396dde1636 (svn r27092) -Fix/Add [FS#6186]: Compilation on OS/2 (smedles) 2014-12-24 17:17:18 +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 bd64bf6372 (svn r23193) -Codechange: don't cast away const unneededly 2011-11-12 08:10:22 +00:00
rubidium 289133be14 (svn r22695) -Fix [FS#4697]: mark addresses that could not be resolved as 'do not resolve anymore' as well, instead of trying to resolve them each and every time the address is accessed 2011-07-30 10:28:52 +00:00
rubidium eb299736c1 (svn r21886) -Codechange: move documentation towards the code to make it more likely to be updated [n]. 2011-01-22 09:53:15 +00:00
frosch 98250ad8da (svn r20951) -Codechange: Add SmallMap::Contains() and use it. 2010-10-16 20:34:43 +00:00
rubidium 6b35de215c (svn r19385) -Fix [FS#3684]: [IPv6] Netmask calculations were wrong if cidr >= 32. 2010-03-11 17:57:14 +00:00
rubidium d6cded5380 (svn r17693) -Cleanup: remove some unneeded includes 2009-10-04 17:16:41 +00:00
rubidium 7fbc33dae1 (svn r17248) -Fix: add GPL license notice where appropriate 2009-08-21 20:21:05 +00:00
smatz d4971a22d0 (svn r16265) -Fix (r16238): wrong format string for debug output 2009-05-10 13:23:23 +00:00
rubidium 951b9e7615 (svn r16238) -Change: improve/clarify some network related debug "error" messages by adding more information to them. Also give some clues on how to fix certain issues (like failing advertising). 2009-05-06 09:52:52 +00:00
rubidium 47e2901e18 (svn r16034) -Fix: compile warnings generated by 64 bits MSVC. 2009-04-11 20:26:25 +00:00
rubidium 460fbc7c92 (svn r16007) -Fix (r16004): when we want to bind to both IPv4 and IPv6, make the master socket do that too; too bad getaddrinfo can't handle binding to any address on any port at the same time :( 2009-04-10 09:23:35 +00:00
rubidium 28bce241fd (svn r16005) -Fix: assertion when there is no last joined server; when you've got an unresolved address, the hostname cannot be resolved either so return it as-is. 2009-04-09 21:36:09 +00:00
rubidium 8477e92386 (svn r16004) -Fix (r16000): explicitly binding to an IPv4 socket would try to register an IPv6 address (only if it could ofcourse) 2009-04-09 21:26:29 +00:00
rubidium 0f0cc67d62 (svn r15990) -Codechange: provide a thread safe variant of GetAddressAsString. 2009-04-08 21:11:16 +00:00
rubidium 080095ade5 (svn r15984) -Codechange: prepare the UDP receiver to process multiple types of returned server lists. 2009-04-08 17:51:04 +00:00
rubidium cd8da0d69e (svn r15982) -Codechange: use GetAddressAsString to get the name instead of passing the hostname and the IP into a string. 2009-04-08 12:52:53 +00:00
rubidium 9d6edae94d (svn r15981) -Fix: don't print the address family when writing the IP+port to the config file. 2009-04-08 12:09:07 +00:00
rubidium 18146572b0 (svn r15980) -Codechange: don't try to bind to the same socket twice; it's quite pointless. 2009-04-08 11:57:00 +00:00
rubidium c2152fa31f (svn r15979) -Codechange: tweak the debug/warning levels of some of the messages when binding 2009-04-08 01:23:44 +00:00
rubidium 20e82c46d3 (svn r15976) -Codechange: make it a bit more clear for what (type of) address binding fails 2009-04-08 00:41:35 +00:00
rubidium 1eb4aa971e (svn r15975) -Codechange: register each of the IPs we have bound to to the masterserver 2009-04-08 00:26:49 +00:00
rubidium c0f8214218 (svn r15972) -Codechange: remove unneeded parameter 2009-04-08 00:03:05 +00:00
rubidium 6db7f15b3a (svn r15970) -Codechange: make it possible to resolve a single address into multiple sockets. 2009-04-07 19:52:01 +00:00
rubidium fdddfd6269 (svn r15968) -Codechange: do not allocate a buffer for NetworkAddresses so passing it around is easier. 2009-04-07 19:04:37 +00:00
rubidium 616cac0c54 (svn r15951) -Fix (r15946) [FS#2803]: ofcourse a couple of OSes/compilers do not provide a nice 'interface', so we have to do it the ugly way. 2009-04-04 08:48:12 +00:00
glx 5eed35ef54 (svn r15950) -Fix (r15946): mingw compilation 2009-04-04 03:45:02 +00:00
rubidium 2fd9f0fffa (svn r15946) -Codechange: move netmask matching to NetworkAddress and add some support for IPv6 netmask matching. 2009-04-04 00:47:08 +00:00
rubidium 7cf4639255 (svn r15944) -Codechange: disable IPv4 over IPv6 sockets as there is no default value and not all OSes actually support IPv4 over IPv6 so making it the same on all OSes eases debugging and such 2009-04-03 21:46:52 +00:00
rubidium ce06df313d (svn r15941) -Codechange: jonty-comp's wish partly implemented (content server) ;) 2009-04-03 17:20:57 +00:00
rubidium 1463b00b48 (svn r15940) -Codechange: move setting reuse address to the binding process. 2009-04-03 17:02:29 +00:00
rubidium 2bfc9ca50c (svn r15934) -Fix: work around Solaris' inability to "parse" 0 as defined in the specifications. 2009-04-03 15:24:39 +00:00
glx 65d10e66f0 (svn r15933) -Fix (r15920): mingw doesn't know getaddrinfo() and freeaddrinfo() either 2009-04-03 14:01:45 +00:00
rubidium 47602d7b60 (svn r15925) -Codechange: remove _network_server_bind_ip as it's pretty AF dependant. 2009-04-03 10:29:56 +00:00
rubidium dccfba6e20 (svn r15924) -Codechange: replace NetworkResolveHost with something less AF dependant. 2009-04-03 09:07:16 +00:00
rubidium 632d74c6b1 (svn r15922) -Codechange: unify the ways to listen on a socket 2009-04-03 01:24:52 +00:00
rubidium ba5aafb9bb (svn r15921) -Fix: some OSes don't like sizeof(sockaddr_storage) but want sizeof(sockaddr) or whatever is 'valid' for the given protocol 2009-04-03 00:33:00 +00:00
rubidium c7b6469dab (svn r15920) -Codechange: make the (TCP) connecting less AF dependent. 2009-04-02 23:59:43 +00:00
rubidium c5160c7c8e (svn r15917) -Codechange: remove the latest traces of NetworkAddress::GetIP. 2009-04-02 20:39:30 +00:00
rubidium 1e205e01b8 (svn r15916) -Codechange: let the network game list use NetworkAddress 2009-04-02 20:17:46 +00:00
rubidium c0c6e07081 (svn r15915) -Codechange: let the udp code use NetworkAddress. 2009-04-02 19:21:26 +00:00