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
#import pdb; pdb.set_trace()
160
if tcs.range_limit is not None and len(ranges) > tcs.range_limit:
162
# Emulate apache behavior
163
self.send_error(400, "Bad Request")
165
return TestingHTTPRequestHandler.get_multiple_ranges(self, file,
169
tcs = self.server.test_case_server
170
tcs.GET_request_nb += 1
171
return TestingHTTPRequestHandler.do_GET(self)
174
class LimitedRangeHTTPServer(HttpServer):
175
"""An HttpServer erroring out on requests with too much range specifiers"""
177
def __init__(self, request_handler=LimitedRangeRequestHandler,
179
HttpServer.__init__(self, request_handler)
180
self.range_limit = range_limit
181
self.GET_request_nb = 0
153
184
class SingleRangeRequestHandler(TestingHTTPRequestHandler):
154
185
"""Always reply to range request as if they were single.