150
150
self.wfile.write(out_buffer.getvalue())
153
class LimitedRangeRequestHandler(TestingHTTPRequestHandler):
154
"""Errors out when range specifiers exceed the limit"""
156
def get_multiple_ranges(self, file, file_size, ranges):
157
"""Refuses the multiple ranges request"""
158
tcs = self.server.test_case_server
159
if tcs.range_limit is not None and len(ranges) > tcs.range_limit:
161
# Emulate apache behavior
162
self.send_error(400, "Bad Request")
164
return TestingHTTPRequestHandler.get_multiple_ranges(self, file,
168
tcs = self.server.test_case_server
169
tcs.GET_request_nb += 1
170
return TestingHTTPRequestHandler.do_GET(self)
173
class LimitedRangeHTTPServer(HttpServer):
174
"""An HttpServer erroring out on requests with too much range specifiers"""
176
def __init__(self, request_handler=LimitedRangeRequestHandler,
178
HttpServer.__init__(self, request_handler)
179
self.range_limit = range_limit
180
self.GET_request_nb = 0
183
153
class SingleRangeRequestHandler(TestingHTTPRequestHandler):
184
154
"""Always reply to range request as if they were single.