Commit 9f71c7ad authored by Jim Jagielski's avatar Jim Jagielski
Browse files

Merge r1860260 from trunk:

 * modules/http2: more copying of data to disentangle worker processing from main connection


Submitted by: icing
Reviewed by: icing, covener, jim


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1861247 13f79535-47bb-0310-9956-ffa450edef68
parent bf8fbbd8
Loading
Loading
Loading
Loading
+0 −5
Original line number Original line Diff line number Diff line
@@ -135,11 +135,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
     2.4.x patch: svn merge -c 1707084,1707093,1707159,1707362 ^/httpd/httpd/trunk .
     2.4.x patch: svn merge -c 1707084,1707093,1707159,1707362 ^/httpd/httpd/trunk .
     +1: icing, covener, jim
     +1: icing, covener, jim


  *) mod_http2:  more copying of data to disentangle worker processing from main connection
     trunk patch: http://svn.apache.org/r1860260
     2.4.x patch: svn merge -c 1860260 ^/httpd/httpd/trunk .
     +1: icing, covener, jim

PATCHES PROPOSED TO BACKPORT FROM TRUNK:
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
  [ New proposals should be added at the end of the list ]
  [ New proposals should be added at the end of the list ]


+11 −3
Original line number Original line Diff line number Diff line
@@ -102,8 +102,9 @@ apr_bucket *h2_bucket_headers_beam(struct h2_bucket_beam *beam,
                                    const apr_bucket *src)
                                    const apr_bucket *src)
{
{
    if (H2_BUCKET_IS_HEADERS(src)) {
    if (H2_BUCKET_IS_HEADERS(src)) {
        h2_headers *r = ((h2_bucket_headers *)src->data)->headers;
        h2_headers *src_headers = ((h2_bucket_headers *)src->data)->headers;
        apr_bucket *b = h2_bucket_headers_create(dest->bucket_alloc, r);
        apr_bucket *b = h2_bucket_headers_create(dest->bucket_alloc, 
                                                 h2_headers_clone(dest->p, src_headers));
        APR_BRIGADE_INSERT_TAIL(dest, b);
        APR_BRIGADE_INSERT_TAIL(dest, b);
        return b;
        return b;
    }
    }
@@ -156,7 +157,14 @@ h2_headers *h2_headers_rcreate(request_rec *r, int status,


h2_headers *h2_headers_copy(apr_pool_t *pool, h2_headers *h)
h2_headers *h2_headers_copy(apr_pool_t *pool, h2_headers *h)
{
{
    return h2_headers_create(h->status, h->headers, h->notes, h->raw_bytes, pool);
    return h2_headers_create(h->status, apr_table_copy(pool, h->headers), 
                             apr_table_copy(pool, h->notes), h->raw_bytes, pool);
}

h2_headers *h2_headers_clone(apr_pool_t *pool, h2_headers *h)
{
    return h2_headers_create(h->status, apr_table_clone(pool, h->headers), 
                             apr_table_clone(pool, h->notes), h->raw_bytes, pool);
}
}


h2_headers *h2_headers_die(apr_status_t type,
h2_headers *h2_headers_die(apr_status_t type,
+7 −1
Original line number Original line Diff line number Diff line
@@ -59,11 +59,17 @@ h2_headers *h2_headers_rcreate(request_rec *r, int status,
                                 apr_table_t *header, apr_pool_t *pool);
                                 apr_table_t *header, apr_pool_t *pool);


/**
/**
 * Clone the headers into another pool. This will not copy any
 * Copy the headers into another pool. This will not copy any
 * header strings.
 * header strings.
 */
 */
h2_headers *h2_headers_copy(apr_pool_t *pool, h2_headers *h);
h2_headers *h2_headers_copy(apr_pool_t *pool, h2_headers *h);


/**
 * Clone the headers into another pool. This will also clone any
 * header strings.
 */
h2_headers *h2_headers_clone(apr_pool_t *pool, h2_headers *h);

/**
/**
 * Create the headers for the given error.
 * Create the headers for the given error.
 * @param stream_id id of the stream to create the headers for
 * @param stream_id id of the stream to create the headers for
+1 −0
Original line number Original line Diff line number Diff line
@@ -1977,6 +1977,7 @@ static void on_stream_state_enter(void *ctx, h2_stream *stream)
            ev_stream_closed(session, stream);
            ev_stream_closed(session, stream);
            break;
            break;
        case H2_SS_CLEANUP:
        case H2_SS_CLEANUP:
            nghttp2_session_set_stream_user_data(session->ngh2, stream->id, NULL);
            h2_mplx_stream_cleanup(session->mplx, stream);
            h2_mplx_stream_cleanup(session->mplx, stream);
            break;
            break;
        default:
        default:
+2 −2
Original line number Original line Diff line number Diff line
@@ -27,7 +27,7 @@
 * @macro
 * @macro
 * Version number of the http2 module as c string
 * Version number of the http2 module as c string
 */
 */
#define MOD_HTTP2_VERSION "1.14.1"
#define MOD_HTTP2_VERSION "1.15.1"


/**
/**
 * @macro
 * @macro
@@ -35,6 +35,6 @@
 * release. This is a 24 bit number with 8 bits for major number, 8 bits
 * release. This is a 24 bit number with 8 bits for major number, 8 bits
 * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
 * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
 */
 */
#define MOD_HTTP2_VERSION_NUM 0x010e01
#define MOD_HTTP2_VERSION_NUM 0x010f01


#endif /* mod_h2_h2_version_h */
#endif /* mod_h2_h2_version_h */