]> granicus.if.org Git - apache/commitdiff
merged H2PushPriority befiore 'weight' loss from trunk
authorStefan Eissing <icing@apache.org>
Mon, 7 Dec 2015 15:34:24 +0000 (15:34 +0000)
committerStefan Eissing <icing@apache.org>
Mon, 7 Dec 2015 15:34:24 +0000 (15:34 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1718406 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/mod/mod_http2.xml
modules/http2/h2_config.c
modules/http2/h2_session.c

index f4a17dc03e7e1b6d55a0a0731cd96dcc98ac4ae7..1648eb73ef3bc64f65855e9062590d8ff255e8ab 100644 (file)
             </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
                 <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>
index 11f9b0a609534a827f83516c04bab9fbbeae59ef..047142470526256add09ed02b726f8b24f64e60a 100644 (file)
@@ -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;
index f91fb7aabe7f3df4b744ea3d620fc2ae7308f9f8..4e3bb8f38be439ea2379351864ef7e1c86714e4a 100644 (file)
@@ -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;