Commit Graph

5919 Commits (b598cfbc6a2888686084e5d47edd0d1f2fb534a6)

Author SHA1 Message Date
Giel van Schijndel a385545043 * Don't handle protocol specific encoding in wzmasterserver.py, instead deal with it in the Protocol classes in protocol.py
* Don't set Game's `hosts` value to a list of ''exactly'' 3
  - Instead use empty strings for non-existing hostnames below 3 (when encoding only)
  - This allows for a bit more extensibility in the future.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7365 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-09 23:29:55 +02:00
Giel van Schijndel 3dfb215c8b Add IPv6 support to the lobby protocol
* Add a new field: secondaryHosts, an array of two fallback hosts
  - Canibalize the entire "misc" field and part of the "extra" field for this
  - When connecting, first try the primary "host" field, then fall back to the hosts in secondaryHosts (in order)
 * Add a new field: gameId, used on the lobby server to link multiple lobby connections to a single game entry
  - First (attempt to) connect to the lobby with all available address families (currently IPv4 and IPv6)
  - Then ask for a gameId from the lobby server using the first established lobby connection
  - Set the gameId field in the GAMESTRUCT to the one retrieved
  - Transmit the GAMESTRUCT using a "addg" command to the lobby over each lobby connection
  - The lobby then compares all incoming ID numbers with ID numbers already present
  - If there's a match it will use the GAMESTRUCT already present and only add a new hostname to the list

This is the last change, part of, and closes #452

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7364 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-09 23:29:55 +02:00
Giel van Schijndel 3b80e3a63c Add client side IPv6 support
* Properly format IPv6 addresses (so that parsing later on will work again)
 * Resolve names to all address families, not just IPv4

Addresses #452

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7363 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-09 23:29:54 +02:00
Giel van Schijndel 4a90601536 Add partial server side IPv6 support
Implement a "dual stack", i.e. listen on both IPv4 and IPv6 addresses.
This change doesn't affect the socket API itself.

Addresses #452

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7362 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-09 23:29:54 +02:00
Guangcong Luo ad647da647 "Player disconnected" and "Player left" icons.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7360 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-09 23:29:54 +02:00
Buginator 638c63261b Workaround for a bug in the script files that abuses the DORDER_BUILD order for demolition.
The problem is with the player*.slo file(s), but putting off a proper fix until the LUA translation is completed.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7358 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-09 23:29:54 +02:00
Guangcong Luo 557985516b Fix crash introduced by r7353 when starting skirmish/MP game in T2/T3 mode.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7356 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-09 23:29:54 +02:00
Guangcong Luo 1c090d7bff Rebalance 0.5.0:
* Heavy VTOL bombs made lighter, light VTOL bombs made heavier.
* VTOL bomb accuracy upgrades changed to damage upgrades.
* Angel Missile stronger, Archangel Missile weaker, both fewer prereqs.
* Damage upgrades now also upgrade splash and burn damage.
* Needle Gun slightly stronger. Still not actually better than HPV.
* Rails now penetrating weapons. In practice, this shouldn't make much difference.
* Factory, Cyborg factory, and VTOL factory upgrades combined; now only 4 upgrades instead of 6-9 each.
* Repair facility upgrades condensed, now only 3 upgrades instead of 6.
* Artillery weapons do less damage to tanks, but more to walls.
* MG damage back down to original levels. The extra APDSB MG Bullets in the early game does plenty to compensate.
* VTOL HP actually makes sense now.
* Cannon HP increased a bit more.
* Stormy nerfed.
* All AA weapons have full fire-on-move.

For exact numbers, refer to http://guide.wz2100.net/new/ or wait for the detailed changelog after all rebalancing is done.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7353 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-09 23:29:54 +02:00
Giel van Schijndel 6739e6aa20 When drawing formatted text treat *real* newline characters ('\n') as newlines as well
- Not just the special formatting character '@'

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7346 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:42 +02:00
Giel van Schijndel 6fdc07b3f9 For the purpose of error messages set the error to ECONNRESET when we got disconnected while doing a readAll()
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7345 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:42 +02:00
Giel van Schijndel a43e84e0fd Lobby server: in the "Game unreachable" message, sent when the connection test fails, give the port number of the game server, not the lobby server
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7343 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:42 +02:00
Giel van Schijndel a71b83b91b On platforms that don't support IPV6_V6ONLY, just ignore it and hope the platform doesn't automatically enable IPv6 mapped IPv4 addresses
This allows the lobby server to be used on platforms that don't support IPV6_V6ONLY socket option.

Thanks to Buginator for reporting this.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7342 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:41 +02:00
Buginator 3042114be5 Work around for drivers that report VBO, but don't have full openGL 1.5 implementation.
This is the case for the current radeon open source drivers, and possibly others.

Patch by: suokko (Pauli Nieminen)
see: http://developer.wz2100.net/ticket/216
reference ticket:216



git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7341 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:41 +02:00
Guangcong Luo fedd43dbe4 Stop trucks from ever building on burning oil resources (fixes bug #181)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7339 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:41 +02:00
Buginator b6460140df * Don't abort() because a string can't be found.
* Don't abort() because we cannot find a Droid template.


git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7336 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:41 +02:00
Buginator d16573b326 Let's not underflow a unsigned variable.
Broken in r6969


git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7334 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:41 +02:00
Buginator b9aea91c74 Move 'server_not_there' to a more correct location.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7333 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:40 +02:00
Buginator e26ca45678 When we get a error in readLobbyResponse(), we need to put a stop to hitting the server, since this will cause massive slowdowns.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7330 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:40 +02:00
Guangcong Luo 5a974ed226 Windows installer fixes:
* Make the cross-compile script Ubuntu-compatible
 * Don't redownload the music mod if we already have it
 * Download sequences (if we don't already have it)
 * Remove EULA agreement (The GPL is not a EULA)
 * Install OpenAL silently (Its license is not a EULA; see ML discussion)

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7327 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:40 +02:00
Giel van Schijndel e672ad000e Fix error introduced in r7323: gameHost is a member of "self" now, not a local variable
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7324 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:40 +02:00
Giel van Schijndel d02f591709 Lobby protocol; change the way the "addg" command works:
* Make the "addg" command return a status code (ranging 200-299 on success) and message (MOTD on succes)
 * Don't use the "motd" command anymore to check the lobby status, instead use the returned status code for that purpose.
 * Allow MOTD strings of arbitrary length (by sending along the length)

This modification ensures that ''proper'' connectivity checking is being performed on the game server (and reported to the user accurately).

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7323 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:40 +02:00
Per Inge Mathisen cd07168f5c Silence valgrind warning about uninitialized local variable in visibility code.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7322 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:40 +02:00
Per Inge Mathisen 74a0ad9a94 Fix valgrind warning about an uninitialized variable in display3d.c
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7321 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:40 +02:00
Per Inge Mathisen c8b522c092 Make sure we clean up allocated memory from effects to stop memory checkers from complaining. Reviewed by devurandom.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7320 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:39 +02:00
Per Inge Mathisen 5c68cb0e9a Improve error reporting in research loading code, trying to hunt down memory leak reported by valgrind.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7319 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:39 +02:00
Per Inge Mathisen 870c18b66d Make sure game time variables are properly initialized first time we refer to them. Detected by valgrind.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7318 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:39 +02:00
Buginator 967b1bcb74 Reset version string back to "trunk", accidentally changed in r7079.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7315 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:39 +02:00
Buginator cb32aca203 Get rid of magic numbers, and use #define instead.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7313 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:39 +02:00
Buginator 331b98f46e Use strcasecmp() not stricmp()
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7311 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:39 +02:00
Buginator bb848f5582 Add error messages in case the values we have read in from the config file don't match the default values.
In fact, I am not really sure why we allow those to be changed when we release a new version?

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7309 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:38 +02:00
Giel van Schijndel 38cfef4e6d Make sure to #undef the errno Exxxx symbols on Windows to prevent collision with the predefined ones by MinGW
Also lets :sort the Exxxx #define list

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7308 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:38 +02:00
Buginator 7e1a1d714c Slight fixes for the BSD socket overhaul to make it compile OK on MSVC again.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7307 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:38 +02:00
Giel van Schijndel 9fa9402919 Work around MSVC's weak & stinky preprocessor:
* Duplicate the entire ASSERT() call instead of conditionally expanding its parameter
  - Depending on whether we are or are not compiling on Windows

Thanks go to Buginator for reporting this.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7306 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:38 +02:00
Giel van Schijndel 7c49ed6628 Lobby utility library:
* Create another custom context manager (can be used in with-statement) for creating a connection to a given (host, port): "connection"
  - Perform manual name-resolution, using each returned entry until one can be succesfully connected to (allows IPv4 + IPv6 through the same function)
 * Use this context manager instead of connecting manually

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7305 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:38 +02:00
Giel van Schijndel 24cc8fda66 Use the "Protocol" constructor function instead of trying to use "BinaryProtocol" (which doesn't exist anymore)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7304 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:38 +02:00
Giel van Schijndel fcf40c7eb2 For incoming connections print the address from which the connection originates.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7303 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:38 +02:00
Giel van Schijndel a3cbe4c0c3 Use a single function for address to text translation (instead of duplicating code)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7302 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:37 +02:00
Giel van Schijndel dc70524cd2 Take advantage of SocketAccept's non-blocking nature
Just go ahead and try to accept incoming connections without waiting for
a notification that connections are pending.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7301 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:37 +02:00
Giel van Schijndel 63b6d37a94 Make SocketAccept non-blocking
This way it is no longer required to first explicitly check whether
connections are pending (through checkSockets, which select(2)s) and
only then accept(2) it. Now you can attempt to accept the connection,
and if one is available it'll get returned, NULL otherwise.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7300 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:37 +02:00
Giel van Schijndel 36f536fcdb Check for EAGAIN as well to confirm connect(2) has started
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7299 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:37 +02:00
Giel van Schijndel 73a29daefd * Use camelCase instead of CamelCase and under_squores (as requested by Per, see #435)
* Rename read_all to readNoInt because that function is a read(2) variant that doesn't get interrupted by signals (EINTR)
 * Add Doxygen comments to readNoInt and writeAll

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7298 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:37 +02:00
Giel van Schijndel 9c340eb3f7 Use winsock 2 on all build systems (not just autohell like in r7284)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7297 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:37 +02:00
Giel van Schijndel a8f8357904 Mark the server socket as not-ready when we've just accept(2)ed on it
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7296 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:36 +02:00
Giel van Schijndel 99c1ed95e8 Always use SocketClose to clean up sockets
Additionally make SocketClose work properly on Windows as well.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7295 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:36 +02:00
Giel van Schijndel 0bc6be39b1 Fix logic in handling return value of addSocket
When a socket set is full (in addSocket) print a debug message

This is the last change, part of, and closes #435

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7294 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:36 +02:00
Giel van Schijndel ba9d49acd5 Get rid of duplicated code
Addresses #435

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7293 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:36 +02:00
Giel van Schijndel ab6b694420 Bugfix: set SOCKET_ERROR to -1 to *correctly* check for errors
Addresses #435

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7292 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:36 +02:00
Giel van Schijndel a9070e60a9 For non-blocking sockets lets not block on read_all()
Addresses #435

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7291 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:36 +02:00
Giel van Schijndel 37d3b9535f Replace -1 for socket API errors with SOCKET_ERROR
Additionaly, on Unix systems define constants SOCKET_ERROR and INVALID_SOCKET to -1

Addresses #435

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7290 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:36 +02:00
Giel van Schijndel f412eb5a6f Port NetPlay's BSD socket usage to Windows
* Use the "SOCKET" typedef to represent socket descriptors (instead of "int")
 * Add wrapper functions for getting & setting the last socket error ("errno" on Unix)
 * Add a wrapper function for strerror, strsockerror, that works on Windows
 * Use recv(2) and send(2) instead of read(2) and write(2) respectively
 * Use INVALID_SOCKET and SOCKET_ERROR instead of -1 to find errors
 * Move setting of sockets to blocking/non-blocking to a separate function
 * Add Windows-specific wrapper functions for getaddrinfo() and freeaddrinfo()
  - Currently work only from 2000 *or* XP upwards, documentation is fuzzy.

Addresses #435

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7289 4a71c877-e1ca-e34f-864e-861f7616d084
2009-05-06 22:29:35 +02:00