Commit 252abf0a authored by Stefan Eissing's avatar Stefan Eissing
Browse files

merged H2PushPriority befiore 'weight' loss from trunk

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1718406 13f79535-47bb-0310-9956-ffa450edef68
parent 8a3123d0
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -267,15 +267,15 @@
            </p>
            <example><title>Before Priority Rule</title>
                <highlight language="config">
                    H2PushPriority application/json Before 256
                    H2PushPriority application/json Before
                </highlight>
            </example>
            <p>
                This says that any pushed stream of content type 'application/json'
                should be send out <em>before</em> X. This makes P1 dependent
                on Y and X dependent on P1. So, X will be stalled as long as
                P1 has data to send. The effective weight is calculated as
                in the interleaved case.
                P1 has data to send. The effective weight is inherited from the
                client stream. Specifying a weight is not allowed.
            </p>
            <p>
                Be aware that the effect of priority specifications is limited
@@ -291,13 +291,13 @@
                <li>'*' is the only special content-type that matches all others. 
                 'image/*' will not work.</li>
                <li>The default dependency is 'After'. </li>
                <li>There are also default weights: for 'After' it is 16, otherwise 256. 
                <li>There are also default weights: for 'After' it is 16, 'interleaved' is 256. 
                </li>
            </ol>
            <example><title>Shorter Priority Rules</title>
                <highlight language="config">
H2PushPriority application/json 32         # an After rule
H2PushPriority image/jpeg before           # weight 256 default
H2PushPriority image/jpeg before           # weight inherited
H2PushPriority text/css   interleaved      # weight 256 default
                </highlight>
            </example>
+3 −1
Original line number Diff line number Diff line
@@ -429,7 +429,9 @@ static const char *h2_conf_add_push_priority(cmd_parms *cmd, void *_cfg,
    } 
    else if (!strcasecmp("BEFORE", sdependency)) {
        dependency = H2_DEPENDANT_BEFORE;
        sdefweight = "256";        /* default BEFORE weight */
        if (sweight) {
            return "dependecy 'Before' does not allow a weight";
        }
    } 
    else if (!strcasecmp("INTERLEAVED", sdependency)) {
        dependency = H2_DEPENDANT_INTERLEAVED;
+3 −4
Original line number Diff line number Diff line
@@ -1396,11 +1396,12 @@ apr_status_t h2_session_set_prio(h2_session *session, h2_stream *stream,
                /* PUSHed stream os to be sent BEFORE the initiating stream.
                 * It gets the same weight as the initiating stream, replaces
                 * that stream in the dependency tree and has the initiating
                 * stream as child with MAX_WEIGHT.
                 * stream as child.
                 */
                ptype = "BEFORE";
                w_parent = nghttp2_stream_get_weight(s_parent);
                w = w_parent = nghttp2_stream_get_weight(s_parent);
                nghttp2_priority_spec_init(&ps, stream->id, w_parent, 0);
                id_grandpa = nghttp2_stream_get_stream_id(s_grandpa);
                rv = nghttp2_session_change_stream_priority(session->ngh2, id_parent, &ps);
                if (rv < 0) {
                    ap_log_cerror(APLOG_MARK, APLOG_DEBUG, 0, session->c,
@@ -1409,8 +1410,6 @@ apr_status_t h2_session_set_prio(h2_session *session, h2_stream *stream,
                                  session->id, id_parent, ps.weight, ps.stream_id, rv);
                    return APR_EGENERAL;
                }
                id_grandpa = nghttp2_stream_get_stream_id(s_grandpa);
                w = valid_weight(w_parent * ((float)prio->weight / NGHTTP2_MAX_WEIGHT));
                nghttp2_priority_spec_init(&ps, id_grandpa, w, 0);
                break;