[Bug 807259] Re: MetaRelease.download() Issue after Captive Portal
Brian Murray
brian at ubuntu.com
Wed Mar 14 18:33:51 UTC 2012
** Changed in: update-manager (Ubuntu)
Importance: Undecided => Medium
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to update-manager in Ubuntu.
https://bugs.launchpad.net/bugs/807259
Title:
MetaRelease.download() Issue after Captive Portal
Status in “update-manager” package in Ubuntu:
Confirmed
Bug description:
I attempted to perform a release update today from maverick to natty.
Both update-manager -c and do-release-update indicated that no newer
releases were available.
After some investigation, I discovered the following was the culprit:
david at marshall:~$ export DEBUG_UPDATE_MANAGER=1
david at marshall:~$ do-release-upgrade
Checking for a new ubuntu release
MetaRelease.__init__() useDevel=False useProposed=False
/etc/update-manager/meta-release: http://changelogs.ubuntu.com/meta-release
/etc/update-manager/meta-release: http://changelogs.ubuntu.com/meta-release-lts
/etc/update-manager/meta-release: -development
/etc/update-manager/meta-release: -proposed
metarelease-uri: http://changelogs.ubuntu.com/meta-release
MetaRelease.download()
result of meta-release download: 'HTTP Error 304: Not Modified'
reading file '/home/david/.cache/update-manager-core/meta-release'
have self.metarelease_information
MetaRelease.parse()
current dist name: 'maverick'
current dist not found in meta-release file
No new release found
david at marshall:~$ ls -l ~/.cache/update-manager-core/meta-release
-rw-r--r-- 1 david david 780 2011-06-30 18:14 /home/david/.cache/update-manager-core/meta-release
david at marshall:~$ cat ~/.cache/update-manager-core/meta-release
<html>
<!--
<?xml version="1.0" encoding="UTF-8"?>
<WISPAccessGatewayParam
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://192.168.10.1/xml/WISPAccessGatewayParam.xsd">
<Redirect>
<AccessProcedure>1.0</AccessProcedure>
<AccessLocation></AccessLocation>
<LocationName></LocationName>
<LoginURL>http://192.168.10.1/login?target=xml</LoginURL>
<MessageType>100</MessageType>
<ResponseCode>0</ResponseCode>
</Redirect>
</WISPAccessGatewayParam>
-->
<head>
<title>...</title>
<meta http-equiv="refresh" content="0; url=http://192.168.10.1/login?dst=http%3A%2F%2Fchangelogs.ubuntu.com%2Fmeta-release">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
</head>
<body>
</body>
</html>
---------------
As you can likely tell, I was behind a captive portal on 2011-06-30. Update manager [automatically] attempted to retrieve the meta-release file at that time, and--even though it likely had a valid file before--grabbed the captive portal page, because it was newer. Now when update-manager-core calls self.download(), the following is added:
req.add_header("If-Modified-Since", time.asctime(time.gmtime(lastmodified)))
The meta-release file on the changelog.ubuntu.com server hasn't been
changed since I used the captive portal (and likely only changes when
a new release cycle begins), so the server returns HTTP 304 (not
modified), and the client relies on the cached copy on disk (which is
bogus). Neither MetaReleaseCore::download() nor
MetaReleaseCore::parse() really care that the file on disk is
obviously not the right format, with ::parse() simply returning false
to nothing (unchecked return value in ::download()).
Given the small size of meta-release (6.7k), it hardly seems worth the
effort of adding complexity necessary to avoid potentially re-
downloading this data occasionally, but I suppose it's your
prerogative. One workaround while still achieving this goal might be
to check the server date is newer *OR* filesize does not match with a
HEAD request prior to GET (and without If-Modified-Since), though this
still leaves the window open for the corner case of a captive portal
page exactly the same size as the meta-release file.
Additionally, if ::parse() returns false, it may be worthwhile to
delete the .cache version of the meta-release file (and try to
download it one more time?) (and tell the user something more useful
than "no update available"?).
ProblemType: Bug
DistroRelease: Ubuntu 10.10
Package: update-manager-core 1:0.142.23
ProcVersionSignature: Ubuntu 2.6.35-30.54-generic 2.6.35.13
Uname: Linux 2.6.35-30-generic x86_64
NonfreeKernelModules: nvidia
Architecture: amd64
Date: Thu Jul 7 16:40:27 2011
InstallationMedia: Ubuntu 10.04 LTS "Lucid Lynx" - Release amd64 (20100429)
ProcEnviron:
LC_TIME=en_DK.utf8
PATH=(custom, user)
LANG=en_US.utf8
SHELL=/bin/bash
SourcePackage: update-manager
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/update-manager/+bug/807259/+subscriptions
More information about the foundations-bugs
mailing list