James Turner
706ab387de
Add reporting callback option to SimGear
...
Allows us to trigger an error logging callback explicitly, which can
be used to drive Sentry.io on the FlightGear side.
2020-12-07 17:16:47 +00:00
James Turner
cddfdb7d1d
TerraSync: stronger fix for handling 0-byte files
...
Change logic so we create an empty file for such cases, i.e exactly
matching the repository. This simplifies logic in downstream code,
compared with not creating a local file.
Add a test-case to cover this
Modify TerraSync to detect a failure of Airports_archive downloading,
and fall back to file-by-file updating.
2020-12-07 17:15:51 +00:00
James Turner
3c64578848
HTTPRepository: don’t crash on empty files
...
Fix some additional crash cases around 0-length files
2020-12-07 17:15:38 +00:00
James Turner
e1fe9b45e0
Unzip: adjust error reporting mechanism
...
Don’t use local exception throw+catch to report failures in extracting
a zip archive, since this generates noise in Sentry.
2020-12-07 17:15:30 +00:00
James Turner
8fdc1d306f
State-machines: don’t require name for transitions
...
Allow anonymous transitions, since the name is purely informational
(unlike for states).
Sentry-Id: FLIGHTGEAR-9H
2020-12-07 17:15:17 +00:00
Automatic Release Builder
6e0c39bb68
new version: 2020.3.4
2020-11-30 11:17:52 +00:00
Julian Smith
f20b416cfe
simgear/props/props.cxx: use rmutex to protect SGPropertyNodeListeners.
...
Also added asserts to check _num_iterators always >= 0.
2020-11-29 20:16:46 +00:00
Scott Giese
47e06b5216
METAR: mitigate wind sensor failures
2020-11-29 16:25:01 +00:00
James Turner
bfcdf22705
TerraSync: fix crashes with null file return
...
Not sure how this is happening, but, check for a null file object
in FileGetRequest::onDone.
2020-11-29 16:23:44 +00:00
Stuart Buchanan
d0db407faa
Set minimum expiry time on STG nodes.
2020-11-29 16:23:40 +00:00
Automatic Release Builder
d95b1c0441
new version: 2020.3.3
2020-11-12 11:14:23 +00:00
James Turner
837ba86d57
DNSClient: own requests, and cancel them on timeout
...
Fixes crashes where a request times-out, but then is completed by
UDN sometime afterwards, with a free-d object. Have the DNS::Client own
requests, and be able to retrieve the udns_query to cancel them, in
the timeout case.
Fixes a couple of Sentry reports.
2020-11-12 09:39:58 +00:00
Automatic Release Builder
0cb1b463e1
Catalogs: fix ownership of new Catalogs
...
When doing the initial download of a Catalog, ensure we still keep
an owning ref to it.
2020-11-11 21:18:57 +00:00
Automatic Release Builder
8a772c8edd
new version: 2020.3.2
2020-11-04 22:08:28 +00:00
James Turner
03bdad0a10
Try to capture cause of BTG load failures
2020-11-04 11:52:58 +00:00
James Turner
537776e1f8
TerraSync: fix local-file copying
...
Avoid downloading data corresponding to files shipped in FGData.
2020-11-04 11:22:48 +00:00
James Turner
f34a4a304e
Untar: log error details when output create fails
...
Trying to understand why writing to the output files fails for some
users.
Sentry-Id: FLIGHTGEAR-SS
2020-11-03 21:26:03 +00:00
James Turner
a59c4e2c8b
TerraSync: make tarball extraction asynchronous
2020-11-03 17:49:19 +00:00
Julian Smith
46f4967f6e
Allow use of old zlib-1.2.3 on OpenBSD.
...
As of 2020-08-01, OpenBSD's system zlib is 1.2.3 which doesn't
have gzoffset(). However we can get away with this by making
gzfilebuf::approxOffset() always return zero.
2020-11-01 11:12:00 +00:00
James Turner
9305417207
Terrasync: tarball extraction, use larger buffer
...
Use a 1MB buffer, 2kByte is very 1979 :)
2020-11-01 11:11:31 +00:00
James Turner
11da8b33f9
TerraSync: switch to per-directory hash caching
...
Avoid a central hash cache becoming enormous, now we use the selective
download scheme for the tile dirs.
Hash name is changed to co-exist with older versions.
2020-11-01 11:11:27 +00:00
James Turner
c7b320eb55
Fix Airports/ initial sync
2020-11-01 11:11:23 +00:00
James Turner
72b2eb0ebf
TerraSync: avoid 404s to probe missing tiles
...
Use the top-level dirIndex files to determine if a 1x1 tile dir
exists, instead of proving the server via a 404. This reduces the
number of requests we make considerably, which is … important.
2020-11-01 11:11:19 +00:00
James Turner
ec3829addb
TerraSync: validate local dirs incrementally
...
Add a process() method to HTTPRepository, and use this to
incrementally validate subdirs after the .dirIndex is received. This
avoids large pauses of the TerraSync thread, when all of Airports/
is validated at once.
2020-11-01 11:11:15 +00:00
James Turner
96bafef3f3
TerraSync: use an unordered_map for the hash cache
...
Linear-scan is a bit slow in debug builds, for the large Airports/ tree;
switch to an unordered_map.
Will back-port to the LTS once tested a bit more.
2020-11-01 11:11:12 +00:00
James Turner
3ff3bd0a6c
Props: allow flushing the atomic change listener
...
Trying to narrow down causes of the ‘unregister listeners crashes on
shutdown’ reports.
2020-11-01 11:11:07 +00:00
Automatic Release Builder
78d073a0f0
new version: 2020.3.1
2020-10-26 09:09:22 +00:00
Scott Giese
d62796c19d
METAR: When Wind unit not specified, default to knots.
...
FLIGHTGEAR-F6 resolved
2020-10-26 08:58:06 +00:00
Scott Giese
7ea7ff43fc
METAR Wind Sensor Failure.
...
FLIGHTGEAR-F9 resolved.
2020-10-26 08:57:24 +00:00
James Turner
dafd185595
Fix for crash reported by Michael Danilov
...
In case uDNS returns a NULL txt pointer, don’t try to create a
std::string from it, since this will crash,
See: https://sourceforge.net/p/flightgear/codetickets/2398/
2020-10-26 08:54:18 +00:00
Automatic Release Builder
1568ed8b97
Catalog migration: migrate packages too
...
When doing a catalog migration to a new ID (eg, 2018 -> 2020), also
mark the installed packages for installation, on the new catalog.
Related to this, when manually removing a catalog, record this fact,
so we don’t re-add it automatically due to migration.
Add unit-tests covering both of these cases.
2020-10-22 21:27:47 +01:00
Automatic Release Builder
444e2ffb2d
Sound: readWAV: avoid common exceptions.
...
Avoid exceptions for the common ‘file not found’ case, and instead
return false / nullptr. Erik says it’s fine.
2020-10-15 17:00:30 +01:00
Automatic Release Builder
32ccdaec6f
Update version file
2020-10-13 22:27:38 +01:00
Automatic Release Builder
bd9f04d980
TerraSync: retry after socket failures
...
Assume socket failures are intermittent, up to some maximum count
(currently configured as 16). Add a test case to cover this.
2020-10-13 11:38:35 +01:00
Automatic Release Builder
9c530d6978
TerraSync: Rate-limit hash-cache writes
...
This helps with IO-limited performance on Windows
2020-10-07 12:23:33 +01:00
Automatic Release Builder
05094510be
SGPath: optimise exists() on Windows
...
For a very common existence only check, use a dedicated win32 API
function, to save some time.
2020-10-07 12:21:49 +01:00
Automatic Release Builder
41e43eeba0
TerraSync: fix Windows behaviour
...
SGDir on Windows returns dot-files by default, which includes our
hash-cache, causing it to be orphaned.
2020-10-06 23:51:06 +01:00
Automatic Release Builder
f95cbd703a
Add a hasInstance to ResourceManager
...
This is needed to allow order-independent shutdown, due to the dumb
ownership behaviour for providers.
2020-10-06 11:34:03 +01:00
Automatic Release Builder
e39036a635
SGFile::computeHash: check malloc result
...
Trying to fix a reported crash, in this code. malloc() returning null
seems unlikely but worth checking for. ALso use a unique_ptr with
a custom deleter to avoid a leak if we throw.
Sentry-Id: FLIGHTGEAR-3Y
2020-10-06 11:33:17 +01:00
Automatic Release Builder
1171d57b72
XMLSound: Avoid using exceptions for missing file
...
Reducing how noisy our exception reporting is, by using simple return
value from SGXMLSound::init.
2020-10-05 14:21:37 +01:00
Automatic Release Builder
852058150b
TerraSync: fast start Airports/ sync
...
If TerraSync/Airports is missing, download Airport_archive.tgz instead.
In all other cases update as normal. This has the effect, that fresh
installs make many fewer requests to TerraSync servers.
2020-10-05 11:58:03 +01:00
Automatic Release Builder
9be955262e
Terrasync: re-add persistent update cache
...
Re-add (with some tweaks) the persistent tile-cache code, so that
TerraSync checks the server at most once per 24 hour period, for a
given repository path.
(Disbale the cache by setting /sim/terrasync/enable-persistent-cache=0)
2020-10-01 10:00:22 +01:00
Automatic Release Builder
bfa411e9b7
Packages: fix circular refernece bug
...
Packages had a strong back-pointer to their catalog, creating a circular
reference loop. Break this so catalogs & packages are freed on exit.
2020-09-30 15:16:41 +01:00
Automatic Release Builder
dab015742a
Catalogs: fix enabling/disabling
...
Relates to bug Michael found in the launcher:
https://sourceforge.net/p/flightgear/codetickets/2380/
2020-09-30 14:38:35 +01:00
Automatic Release Builder
0ab81d36b9
TerraSync: tweak warnings around checksum failures
...
Trying to reduce log spam when there is a server-side failure.
2020-09-29 17:43:18 +01:00
Automatic Release Builder
4d905135e8
Set optimisation flags for RelwithDebInfo
...
Ensure we use-O3 for AppImage (RelWithDebInfo) builds
2020-09-27 11:15:28 +01:00
Automatic Release Builder
afad224ca0
Fix level of terrasync start/stop messages
2020-09-25 13:54:36 +01:00
Automatic Release Builder
99c159d46e
Harden Repo::computeHashForPath
...
Check for some error cases in computeHashForPath, since this showed up
in some crash reports.
2020-09-23 22:08:55 +01:00
Automatic Release Builder
733efd08dd
Exceptions: optional callback for exception throws.
...
This is to allow recording an error+stacktrace whenever an exception
is thrown, since that’s the point when the stack is interesting.
2020-09-22 15:26:33 +01:00
James Turner
3753c62783
Add MANDATORY_INFO log priority.
...
New log-level to avoid using ‘ALERT’ for expected mandatory messages,
since I want to do error collection on real alerts in a future commit.
As part of this, split logstream.hxx into separate header files, and
add a new virtual hook to LogCallback which takes the complete log-entry
2020-09-18 14:49:33 +01:00