Hi,
I see. Let’s figure this out.
The source code of the location
command is available here, and the function for handling updates starts at line 399:
def handle_update(self, db, ns):
if ns.cron and db:
now = datetime.datetime.utcnow()
[...]
In this script, we get to line 445 and exit with the error message mentioned above:
# Try downloading a new database
try:
t = d.download(public_key=ns.public_key, timestamp=timestamp, tmpdir=tmpdir)
# If no file could be downloaded, log a message
except FileNotFoundError as e:
log.error("Could not download a new database")
return 1
t.download
refers to an instance of the location downloader, whose source code is available here.
For some reason, this command in line 170 does return True
, causing the error message “Downloaded database is outdated. Trying next mirror…”:
if not self._check_database(t, public_key, timestamp):
[...]
In line 198 within the same file, the timestamp embedded into the downloaded database is expected to be newer than the timestamp published via the DNS record:
if timestamp and db.created_at < timestamp.timestamp():
[...]
I believe this is why location update
fails for both of you; we expect the database to be older than the timestamp published, but instead, it is newer or at least equally old.
This should not happen…
Thanks, and best regards,
Peter Müller