Go to file
Shawn O. Pearce 29472463ba Work around Python 2.7 failure to initialize base class
urllib2 returns a malformed HTTPError object in certain situations.
For example, urllib2 has a couple of places where it creates an
HTTPError object with no fp:

  if self.retried > 5:
    # retry sending the username:password 5 times before failing.
    raise HTTPError(req.get_full_url(), 401, "basic auth failed",
                    headers, None)

When it does that, HTTPError's ctor doesn't call through to
addinfourl's ctor:

  # The addinfourl classes depend on fp being a valid file
  # object.  In some cases, the HTTPError may not have a valid
  # file object.  If this happens, the simplest workaround is to
  # not initialize the base classes.
  if fp is not None:
    self.__super_init(fp, hdrs, url, code)

Which means the 'headers' slot in addinfourl is not initialized and
info() fails.  It is completely insane that urllib2 decides not to
initialize its own base class sometimes.

Change-Id: I32a0d738f71bdd7d38d86078b71d9001e26f1ec3
Signed-off-by: Shawn O. Pearce <sop@google.com>
2011-10-11 09:24:07 -07:00
docs sync: Allow -j to have a default in manifest 2011-09-22 18:08:27 -07:00
hooks Automatically install Gerrit Code Review's commit-msg hook 2010-03-06 19:21:00 -08:00
subcmds sync: Support downloading bundle to initialize repository 2011-09-28 10:07:36 -07:00
tests Fix error parsing a non-existant configuration file 2009-07-02 16:12:57 -07:00
.gitignore .gitignore: add an entry for repopickles 2009-06-28 15:08:56 -07:00
.project Add PyDev project files to repo 2009-06-02 00:09:07 +02:00
.pydevproject Add PyDev project files to repo 2009-06-02 00:09:07 +02:00
color.py Add -p to repo forall to improve output formatting 2009-04-18 13:49:13 -07:00
command.py Make path references OS independent 2011-01-09 17:39:19 -08:00
COPYING Initial Contribution 2008-10-21 07:00:00 -07:00
editor.py Fix for handling values of EDITOR which contain a space. 2010-08-06 17:05:04 -07:00
error.py sync: Support downloading bundle to initialize repository 2011-09-28 10:07:36 -07:00
git_command.py Enhance HTTP support 2011-09-19 14:51:47 -07:00
git_config.py sync: Support downloading bundle to initialize repository 2011-09-28 10:07:36 -07:00
git_refs.py Make usage of open safer by setting binary mode and closing fds 2009-04-18 14:48:03 -07:00
git_ssh Don't allow git fetch to start ControlMaster 2010-10-29 08:15:14 -07:00
main.py sync: Support downloading bundle to initialize repository 2011-09-28 10:07:36 -07:00
manifest_xml.py Allow remote url to be relative to manifst url 2011-09-28 10:07:01 -07:00
pager.py Don't start the pager if stdout is a pipe 2009-04-01 07:24:22 -07:00
progress.py Support units in progress messages 2011-09-19 14:52:57 -07:00
project.py Work around Python 2.7 failure to initialize base class 2011-10-11 09:24:07 -07:00
repo sync: Support downloading bundle to initialize repository 2011-09-28 10:07:36 -07:00
SUBMITTING_PATCHES Document how to contribute to the repo project 2009-07-02 13:18:55 -07:00
trace.py Fix repo --trace to show ref and config loads 2009-04-18 09:54:51 -07:00