Example #1
0
    def gotInitialLine(self, initialLine):
        parts = initialLine.split()
        
        # Parse the initial request line
        if len(parts) != 3:
            if len(parts) == 1:
                parts.append('/')
            if len(parts) == 2 and parts[1][0] == '/':
                parts.append('HTTP/0.9')
            else:
                self._abortWithError(responsecode.BAD_REQUEST, 'Bad request line: %s' % initialLine)

        self.command, self.path, strversion = parts
        try:
            protovers = http.parseVersion(strversion)
            if protovers[0] != 'http':
                raise ValueError()
        except ValueError:
            self._abortWithError(responsecode.BAD_REQUEST, "Unknown protocol: %s" % strversion)
        
        self.version = protovers[1:3]
        
        # Ensure HTTP 0 or HTTP 1.
        if self.version[0] > 1:
            self._abortWithError(responsecode.HTTP_VERSION_NOT_SUPPORTED, 'Only HTTP 0.9 and HTTP 1.x are supported.')

        if self.version[0] == 0:
            # simulate end of headers, as HTTP 0 doesn't have headers.
            self.lineReceived('')
Example #2
0
	def gotInitialLine(self, initialLine):
		parts = initialLine.split(' ', 2)

		# Parse the initial request line
		if len(parts) != 3:
			raise BadResponseError, 'Bad response line: %s' % initialLine

		strversion, self.code, message = parts

		try:
			protovers = parseVersion(strversion)
			if protovers[0] != 'http':
				raise ValueError()
		except ValueError:
			raise ProtocolError, "Unknown protocol: %s" % strversion


		self.version = protovers[1:3]

		# Ensure HTTP 0 or HTTP 1.
		if self.version[0] != 1:
			raise ProtocolError, "Only HTTP 1.x is supported."