Ambiguity when handling DATA frames on closed streams

Unless I'm reading this incorrectly, the spec requires conflicting behaviors on the receipt of DATA frames on streams in the "closed" or "half-closed (remote)" states. Section 5.1 requires that the implementation send a stream error of type STREAM_CLOSED whereas section 6.1 requires the implementation respond with a connection error of type PROTOCOL_ERROR.
Can someone clarify the expected behavior?
Relevant parts of the spec:
Section 5.1: Stream states, subsection "half-closed (remote)":
"If an endpoint receives additional frames for a stream that is in this state, other than CONTINUATION frames, it MUST respond with a stream error (Section 5.4.2) of type STREAM_CLOSED."
Section 5.1 Stream states, subsection "closed":
"An endpoint that receives any frame after receiving a RST_STREAM MUST treat that as a stream error (Section 5.4.2) of type STREAM_CLOSED. Similarly, an endpoint that receives any frame after receiving a DATA frame with the END_STREAM flag set, or any frame except a CONTINUATION frame after receiving a HEADERS frame with a END_STREAM flag set MUST treat that as a stream error (Section 5.4.2) of type STREAM_CLOSED."
However, Section 6.1 "DATA":
"If a DATA frame is received whose stream is not in "open" or "half closed (local)" state, the recipient MUST respond with a connection error (Section 5.4.1) of type PROTOCOL_ERROR ."
- alan 		 	   		  

Received on Monday, 2 December 2013 10:22:36 UTC