Commit e12ebd64 authored by Stefan Eissing's avatar Stefan Eissing
Browse files

On the trunk:

mod_http2: client streams that lack the EOF flag get now forcefully
     closed with a RST_STREAM (NO_ERROR) when the request has been answered.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1791388 13f79535-47bb-0310-9956-ffa450edef68
parent 42dcb633
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
                                                         -*- coding: utf-8 -*-
Changes with Apache 2.5.0

  *) mod_http2: client streams that lack the EOF flag get now forcefully
     closed with a RST_STREAM (NO_ERROR) when the request has been answered.
     [Stefan Eissing]     

  *) mod_http2: only when 'HttpProtocolOptions Unsafe' is configured, will
     control characters in response headers or trailers be forwarded to the
     client. Otherwise, in the default configuration, a request will eiher 
+1 −1
Original line number Diff line number Diff line
10024
10027
+11 −1
Original line number Diff line number Diff line
@@ -258,7 +258,17 @@ static int input_consumed_signal(h2_mplx *m, h2_stream *stream)

static int report_consumption_iter(void *ctx, void *val)
{
    input_consumed_signal(ctx, val);
    h2_stream *stream = val;
    h2_mplx *m = ctx;
    
    input_consumed_signal(m, stream);
    if (stream->state == H2_SS_CLOSED_L
        && (!stream->task || stream->task->worker_done)) {
        ap_log_cerror(APLOG_MARK, APLOG_DEBUG, 0, m->c, 
                      H2_STRM_LOG(APLOGNO(10026), stream, "remote close missing")); 
        nghttp2_submit_rst_stream(stream->session->ngh2, NGHTTP2_FLAG_NONE, 
                                  stream->id, NGHTTP2_NO_ERROR);
    }
    return 1;
}

+2 −2
Original line number Diff line number Diff line
@@ -1294,7 +1294,7 @@ static apr_status_t on_stream_headers(h2_session *session, h2_stream *stream,
        }
        else {
            ap_log_cerror(APLOG_MARK, APLOG_DEBUG, status, session->c,
                          H2_STRM_LOG(APLOGNO(), stream, "invalid trailers"));
                          H2_STRM_LOG(APLOGNO(10024), stream, "invalid trailers"));
            h2_stream_rst(stream, NGHTTP2_PROTOCOL_ERROR);
        }
        goto leave;
@@ -1384,7 +1384,7 @@ static apr_status_t on_stream_headers(h2_session *session, h2_stream *stream,
        }
        else {
            ap_log_cerror(APLOG_MARK, APLOG_DEBUG, status, session->c,
                          H2_STRM_LOG(APLOGNO(), stream, "invalid response"));
                          H2_STRM_LOG(APLOGNO(10025), stream, "invalid response"));
            h2_stream_rst(stream, NGHTTP2_PROTOCOL_ERROR);
        }
    }