~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/http.py

[merge] bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
151
151
        cleaner if we just do an http HEAD request, and parse
152
152
        the return code.
153
153
        """
 
154
        path = relpath
154
155
        try:
155
 
            f = get_url(self.abspath(relpath))
 
156
            path = self.abspath(relpath)
 
157
            f = get_url(path)
156
158
            # Without the read and then close()
157
159
            # we tend to have busy sockets.
158
160
            f.read()
159
161
            f.close()
160
162
            return True
161
163
        except urllib2.URLError, e:
 
164
            mutter('url error code: %s for has url: %r', e.code, path)
162
165
            if e.code == 404:
163
166
                return False
164
167
            raise
165
168
        except IOError, e:
 
169
            mutter('io error: %s %s for has url: %r', 
 
170
                e.errno, errno.errorcode.get(e.errno), path)
166
171
            if e.errno == errno.ENOENT:
167
172
                return False
168
173
            raise TransportError(orig_error=e)
172
177
 
173
178
        :param relpath: The relative path to the file
174
179
        """
 
180
        path = relpath
175
181
        try:
176
 
            return get_url(self.abspath(relpath))
 
182
            path = self.abspath(relpath)
 
183
            return get_url(path)
177
184
        except urllib2.HTTPError, e:
 
185
            mutter('url error code: %s for has url: %r', e.code, path)
178
186
            if e.code == 404:
179
 
                extra = ': ' + str(e)
180
 
                raise NoSuchFile(self.abspath(relpath), extra=extra)
 
187
                raise NoSuchFile(path, extra=e)
181
188
            raise
182
189
        except (BzrError, IOError), e:
 
190
            if hasattr(e, 'errno'):
 
191
                mutter('io error: %s %s for has url: %r', 
 
192
                    e.errno, errno.errorcode.get(e.errno), path)
 
193
                if e.errno == errno.ENOENT:
 
194
                    raise NoSuchFile(path, extra=e)
183
195
            raise ConnectionError(msg = "Error retrieving %s: %s" 
184
196
                             % (self.abspath(relpath), str(e)),
185
197
                             orig_error=e)