</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>
}
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;
/* 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,
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;