vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Fri Dec 18 21:19:33 2015 +0200| [c7a2b2bde35b34bfa57edf551734cc890d973d14] | committer: Rémi Denis-Courmont
https: minor revector > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c7a2b2bde35b34bfa57edf551734cc890d973d14 --- modules/access/http/h2frame.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/access/http/h2frame.c b/modules/access/http/h2frame.c index 5a9504b..c5ff0d6 100644 --- a/modules/access/http/h2frame.c +++ b/modules/access/http/h2frame.c @@ -541,6 +541,9 @@ static int vlc_h2_parse_headers_end(struct vlc_h2_parser *p) { p->cbs->stream_headers(s, val, headers); val = 0; + + if (p->headers.eos) + p->cbs->stream_end(s); } else { @@ -549,15 +552,13 @@ static int vlc_h2_parse_headers_end(struct vlc_h2_parser *p) free(headers[i][0]); free(headers[i][1]); } - /* NOTE: The specification implies that the error should also be sent - * for non-last header/continuation frames, but this does not make much - * sense. */ + /* NOTE: The specification implies that the error should be sent for + * the first header frame. But we actually want to receive the whole + * fragmented headers block, to preserve the HPACK decoder state. + * So we send the error at the last header frame instead. */ val = vlc_h2_stream_error(p, p->headers.sid, VLC_H2_REFUSED_STREAM); } - if (p->headers.eos && s != NULL) - p->cbs->stream_end(s); - p->parser = vlc_h2_parse_generic; p->headers.sid = 0; return val; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
