No description
Find a file
Dunedan a7694ef8b3
Fix adding port forwardings using UPnP
The UPnP implementation included a combination of two subtle bugs, which
resulted in failure to create port forwardings every time after the
first one.

When using UPnP, the internet gateway to create the port forwardings at
needs to discovered. As that takes a while, the its root descriptor URL
was supposed to be cached after successful discovery in the user config
in "network.upnprootdescurl". However, instead of caching the root
descriptor URL, the control URL got cached. That caused following
requests to the root descriptor URL to fail, as they ended up at the
control URL instead. As such requests might also fail when the network
topology changed, the code was supposed to fall back to discovering the
internet gateway again when the cached one didn't work. However, due to
the inner workings of miniupnpc the request using the cached root
descriptor URL didn't result in an error, so the new discovery was never
triggered. As the wrong value was persisted in the user config there was
also no way to get out of this situation again.

This commit fixes both of these bugs.

As far as I can tell these bugs existed since the introduction of the
caching of the root descriptor URL in 0ba25e9968, which means creating
port forwardings using UPnP has been broken since Alpha 15.

(cherry picked from commit 18d7746c84)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-05-15 13:44:35 +02:00
.gitea Adds @vladislavbelov as a codeowner to related parts. 2024-12-12 00:19:04 +01:00
binaries Fix crash when trying to join games in lobby dialog 2025-01-28 06:48:51 +01:00
build Add StartupWMClass to desktop file 2025-05-01 08:57:43 +02:00
docs docs: Improve Doxygen Visuals and Build process 2024-10-26 19:33:38 +02:00
libraries Cmake-4 support for nvtt 2025-05-01 08:56:57 +02:00
source Fix adding port forwardings using UPnP 2025-05-15 13:44:35 +02:00
.editorconfig Add EditorConfig options for Python 2024-09-17 11:03:15 +02:00
.gitattributes Deletes internal mod (see SVN history if needed) 2013-02-14 22:32:17 +00:00
.gitignore Add missing wildcard in gitignore 2024-12-21 10:03:12 +01:00
.markdownlint.yaml Add a markdownlint pre-commit hook 2024-08-27 10:06:31 +02:00
.pre-commit-config.yaml Remove obsolete pre-commit excludes 2024-12-13 21:15:13 +01:00
.yamllint.yaml Add yamllint to pre-commit 2024-09-08 13:08:11 +02:00
LICENSE.md docs: Improve Doxygen Visuals and Build process 2024-10-26 19:33:38 +02:00
license_dbghelp.txt Convert license_dbghelp.txt to UTF-8 2024-08-31 17:04:05 +02:00
license_gpl-2.0.txt Initial attempt at describing licensing details 2009-06-20 17:45:51 +00:00
license_lgpl-2.1.txt Initial attempt at describing licensing details 2009-06-20 17:45:51 +00:00
license_mit.txt Adds globalscripts/BicubicInterpolation.js, the corresponding license_mit.txt and points to it for other files with the same license in LICENSE.txt - reviewed by Philip and Itms. Uses that to fix an interpolation issue in gaia.js and also fixes a "fail by one" there - reviewed by elexis. Fixes #4174 2016-09-06 21:49:57 +00:00
README.md Add badges to the readme 2024-09-30 13:36:58 +02:00
ruff.toml Enable various ruff rules 2024-09-21 20:54:30 +02:00

0 A.D. Introductory Information

FreeBSD Build Status Linux Build Status macOS Build Status Windows Build Status

Game References Checks Status Pre-commit Checks Status

0 A.D. (pronounced "zero ey-dee") is a free, open-source, cross-platform real-time strategy game of ancient warfare.

This is currently an incomplete, under-development version of the game. We're always interested in getting more people involved, to help bring the game towards completion and to share the interesting experience of developing a project of this scope.

There are several ways to contact us and find more information:

Running precompiled binaries on Windows

A precompiled, ready-to-play development version of the game is available from a checkout of the nightly-build SVN repository. If you are using the git repository, you have to follow the steps below.

In a checkout of the nightly-build SVN repository, open the "binaries\system" folder.

  • To launch the game: Run pyrogenesis.exe
  • To launch the map editor: Run Atlas.bat or "pyrogenesis.exe -editor"

Compiling the game from source code

The instructions for compiling the game on Windows, Linux and OS X are at BuildInstructions.

Reporting problems

Bugs should be reported on Gitea. For information on reporting problems and finding logs, see ReportingErrors.

Contributing Code

If you want to help out programming for the game, have a look at GettingStartedProgrammers or contact us on #0ad-dev on irc.quakenet.org

Contributing Artwork

If you want to make artwork for the game, have a look at For Artists or visit the forums.

Translating

You can help translating the game at https://www.transifex.com/projects/p/0ad for more information, see Localization