Method: Protocol::HTTP2::Connection#receive_headers

Defined in:
lib/protocol/http2/connection.rb

#receive_headers(frame) ⇒ Object

On the server side, starts a new request.



371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
# File 'lib/protocol/http2/connection.rb', line 371

def receive_headers(frame)
	stream_id = frame.stream_id
	
	if stream_id.zero?
		raise ProtocolError, "Cannot receive headers for stream 0!"
	end
	
	if stream = @streams[stream_id]
		stream.receive_headers(frame)
	else
		if stream_id <= @remote_stream_id
			raise ProtocolError, "Invalid stream id: #{stream_id} <= #{@remote_stream_id}!"
		end
		
		if self.active_streams.count < self.maximum_concurrent_streams
			stream = accept_stream(stream_id)
			@remote_stream_id = stream_id
			
			stream.receive_headers(frame)
		else
			raise ProtocolError, "Exceeded maximum concurrent streams"
		end
	end
end