def _do_read(self, length=None, use_readline=False): if use_readline: reader = self.rfile.readline else: reader = self.rfile.read content_length = self.content_length if content_length is None: # Either Content-Length or "Transfer-Encoding: chunked" must be present in a request with a body # if it was chunked, then this function would have not been called return '' self._send_100_continue() left = content_length - self.position // left = content_length
if length is None: length = left elif length > left: length = left if not length: return '' read = reader(length) self.position += len(read) if len(read) < length: if (use_readline and not read.endswith("\n")) or not use_readline: raise IOError("unexpected end of file while reading request at position %s" % (self.position,)) return read
# if content_length > signed int, get error
# You cat inherit the Input class , give the size or length a default value
# you cat give left a value
if left > 2*1024*1024*1024:
left = 2*1024*1024*1024