Issue #2679 - HTTP/2 Spec Compliance.
Fixed PRIORITY self-dependency. Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
This commit is contained in:
parent
5836c50a20
commit
d06d5f5a71
|
@ -83,6 +83,7 @@ public class HeadersFrame extends Frame
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return String.format("%s#%d{end=%b}", super.toString(), streamId, endStream);
|
return String.format("%s#%d{end=%b}%s", super.toString(), streamId, endStream,
|
||||||
|
priority == null ? "" : String.format("+%s", priority));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,17 +92,11 @@ public class HeadersBodyParser extends BodyParser
|
||||||
length = getBodyLength();
|
length = getBodyLength();
|
||||||
|
|
||||||
if (isPadding())
|
if (isPadding())
|
||||||
{
|
|
||||||
state = State.PADDING_LENGTH;
|
state = State.PADDING_LENGTH;
|
||||||
}
|
|
||||||
else if (hasFlag(Flags.PRIORITY))
|
else if (hasFlag(Flags.PRIORITY))
|
||||||
{
|
|
||||||
state = State.EXCLUSIVE;
|
state = State.EXCLUSIVE;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
state = State.HEADERS;
|
state = State.HEADERS;
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PADDING_LENGTH:
|
case PADDING_LENGTH:
|
||||||
|
@ -162,6 +156,9 @@ public class HeadersBodyParser extends BodyParser
|
||||||
}
|
}
|
||||||
case WEIGHT:
|
case WEIGHT:
|
||||||
{
|
{
|
||||||
|
// SPEC: stream cannot depend on itself.
|
||||||
|
if (getStreamId() == parentStreamId)
|
||||||
|
return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_priority_frame");
|
||||||
weight = (buffer.get() & 0xFF) + 1;
|
weight = (buffer.get() & 0xFF) + 1;
|
||||||
--length;
|
--length;
|
||||||
state = State.HEADERS;
|
state = State.HEADERS;
|
||||||
|
|
|
@ -102,7 +102,6 @@ public class PriorityBodyParser extends BodyParser
|
||||||
// SPEC: stream cannot depend on itself.
|
// SPEC: stream cannot depend on itself.
|
||||||
if (getStreamId() == parentStreamId)
|
if (getStreamId() == parentStreamId)
|
||||||
return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_priority_frame");
|
return connectionFailure(buffer, ErrorCode.PROTOCOL_ERROR.code, "invalid_priority_frame");
|
||||||
|
|
||||||
int weight = (buffer.get() & 0xFF) + 1;
|
int weight = (buffer.get() & 0xFF) + 1;
|
||||||
return onPriority(parentStreamId, weight, exclusive);
|
return onPriority(parentStreamId, weight, exclusive);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue