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