|
@@ -258,6 +258,9 @@ control_frame(State=#state{middlewares=Middlewares, env=Env,
|
|
loop(State#state{last_streamid=StreamID,
|
|
loop(State#state{last_streamid=StreamID,
|
|
children=[#child{streamid=StreamID, pid=Pid,
|
|
children=[#child{streamid=StreamID, pid=Pid,
|
|
input=IsFin, output=nofin}|Children]});
|
|
input=IsFin, output=nofin}|Children]});
|
|
|
|
+ {error, badname} ->
|
|
|
|
+ rst_stream(State, StreamID, protocol_error),
|
|
|
|
+ loop(State#state{last_streamid=StreamID});
|
|
{error, special} ->
|
|
{error, special} ->
|
|
rst_stream(State, StreamID, protocol_error),
|
|
rst_stream(State, StreamID, protocol_error),
|
|
loop(State#state{last_streamid=StreamID})
|
|
loop(State#state{last_streamid=StreamID})
|
|
@@ -355,6 +358,8 @@ syn_stream_headers(<<>>, 0, Acc, Special=#special_headers{
|
|
true ->
|
|
true ->
|
|
{ok, lists:reverse(Acc), Special}
|
|
{ok, lists:reverse(Acc), Special}
|
|
end;
|
|
end;
|
|
|
|
+syn_stream_headers(<< 0:32, _Rest/bits >>, _NbHeaders, _Acc, _Special) ->
|
|
|
|
+ {error, badname};
|
|
syn_stream_headers(<< NameLen:32, Rest/bits >>, NbHeaders, Acc, Special) ->
|
|
syn_stream_headers(<< NameLen:32, Rest/bits >>, NbHeaders, Acc, Special) ->
|
|
<< Name:NameLen/binary, ValueLen:32, Rest2/bits >> = Rest,
|
|
<< Name:NameLen/binary, ValueLen:32, Rest2/bits >> = Rest,
|
|
<< Value:ValueLen/binary, Rest3/bits >> = Rest2,
|
|
<< Value:ValueLen/binary, Rest3/bits >> = Rest2,
|