[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