Parcourir la source

Revert "[trac547] removed unexpected HTTP redirection"

This reverts commit d7cf894e555a8aa8508f695fabac2061822d454d.
Naoki Kambe il y a 14 ans
Parent
commit
5573b0bc95
2 fichiers modifiés avec 17 ajouts et 5 suppressions
  1. 12 2
      src/bin/stats/stats_httpd.py.in
  2. 5 3
      src/bin/stats/tests/b10-stats-httpd_test.py

+ 12 - 2
src/bin/stats/stats_httpd.py.in

@@ -83,8 +83,18 @@ class HttpHandler(http.server.BaseHTTPRequestHandler):
             elif self.path == XSL_URL_PATH:
                 body = self.server.xsl_handler()
             else:
-                self.send_error(404)
-                return None
+                if 'Host' in self.headers.keys():
+                    # redirect to XML URL
+                    self.send_response(302)
+                    self.send_header(
+                        "Location",
+                        "http://" + self.headers.get('Host') + XML_URL_PATH)
+                    self.end_headers()
+                    return None
+                else:
+                    # Couldn't find HOST
+                    self.send_error(404)
+                    return None
         except StatsHttpdError as err:
             self.send_error(500)
             if self.server.verbose:

+ 5 - 3
src/bin/stats/tests/b10-stats-httpd_test.py

@@ -112,13 +112,15 @@ class TestHttpHandler(unittest.TestCase):
         for (k, v) in DUMMY_DATA.items():
             self.assertTrue(handler.response.body.find(str(k))>0)
 
-        # 404 NotFound with Host header
+        # 302 redirect
         handler.path = '/'
         handler.headers = {'Host': 'my.host.domain'}
         handler.do_GET()
-        self.assertEqual(handler.response.code, 404)
+        self.assertEqual(handler.response.code, 302)
+        self.assertEqual(handler.response.headers["Location"],
+                         "http://my.host.domain%s" % stats_httpd.XML_URL_PATH)
 
-        # 404 NotFound without Host header
+        # 404 NotFound
         handler.path = '/path/to/foo/bar'
         handler.headers = {}
         handler.do_GET()