server: Add a fallback MIME type (application/octet-stream)
authorW. Trevor King <wking@tremily.us>
Fri, 21 Feb 2014 20:16:06 +0000 (12:16 -0800)
committerW. Trevor King <wking@tremily.us>
Fri, 21 Feb 2014 20:16:06 +0000 (12:16 -0800)
Avoid:

  Traceback (most recent call last):
    File "/.../wsgiref/handlers.py", line 137, in run
      self.result = application(self.environ, self.start_response)
    File "/.../site-packages/package_cache/server.py", line 50, in __call__
      environ=environ, start_response=start_response)
    File "/.../site-packages/package_cache/server.py", line 69, in _serve_request
      path=cache_path, environ=environ, start_response=start_response)
    File "/.../site-packages/package_cache/server.py", line 124, in _serve_file
      start_response('200 OK', list(headers.items()))
    File "/.../wsgiref/handlers.py", line 226, in start_response
      self.headers = self.headers_class(headers)
    File "/.../wsgiref/headers.py", line 39, in __init__
      self._convert_string_type(v)
    File "/.../wsgiref/headers.py", line 46, in _convert_string_type
      " of type str (got {0})".format(repr(value)))
  AssertionError: Header names/values must be of type str (got None)

for portage-20140220.tar.xz.md5sum.

package_cache/server.py

index 2dfbc1e613c5675ef752b4f0d24a16013120bd8f..f64b62b9d100ae8ab48f47ec3fd4d040255f76f9 100644 (file)
@@ -143,8 +143,9 @@ class Server (object):
         mimetype, charset = _mimetypes.guess_type(url=path)
         if charset:
             return '{}; charset={}'.format(mimetype, charset)
-        else:
+        elif mimetype:
             return mimetype
+        return 'application/octet-stream'
 
     def _get_last_modified(self, path):
         """Last-Modified value per RFC 2616