Mercurial > hg > nginx
view docs/xsls/changes.xsls @ 8878:c4f249d485e3 quic
QUIC: attempt decrypt before checking for stateless reset.
Checking the reset after encryption avoids false positives. More importantly,
it avoids the check entirely in the usual case where decryption succeeds.
RFC 9000, 10.3.1 Detecting a Stateless Reset
Endpoints MAY skip this check if any packet from a datagram is
successfully processed.
author | Martin Duke <m.duke@f5.com> |
---|---|
date | Tue, 12 Oct 2021 11:57:50 +0300 |
parents | 529f10f7757c |
children | e79c7521aaf4 |
line wrap: on
line source
X:stylesheet { X:output method="text"; X:param lang="'en'"; X:param configuration="'../xml/change_log_conf.xml'"; X:var conf = "document($configuration)/configuration"; X:var start = "$conf/start"; X:var indent = "$conf/indent"; X:var max = "$conf/length"; X:var br = {<br>} X:template = "/" { !! "change_log"; } X:template = "change_log" { !! "changes"; } X:template = "changes" { X:text { } !{substring(concat($conf/changes[@lang=$lang]/title, //change_log/@title, ' ', @ver, ' '), 1, $conf/changes[@lang=$lang]/length)} X:if "$lang='ru'" { !{substring(@date, 9, 2)} X:text {.} !{substring(@date, 6, 2)} X:text {.} !{substring(@date, 1, 4)} } X:if "$lang='en'" { !{substring(@date, 9, 2)} !{$conf/changes[@lang=$lang]/month[number(substring(current()/@date, 6, 2))]} !{substring(@date, 1, 4)} } X:text { } !! "change"; X:text { } } X:template = "change" { X:var prefix = "$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]" X:var postfix = { X:if "$prefix" { X:text {: } } } !! "para[@lang=$lang]" (prefix = "concat($start, $prefix, $postfix)"); } X:template para(prefix) = "para" { X:var text = { !!; } X:text { } !wrap(text = "normalize-space($text)", prefix = { X:if "position() = 1" { !{$prefix} } else { !{$indent} } }) } X:template wrap(text, prefix) { X:if "$text" { X:var offset = { X:choose { X:when "starts-with($text, concat($br, ' '))" { !{string-length($br) + 2} } X:when "starts-with($text, $br)" { !{string-length($br) + 1} } X:otherwise { 1 } } } X:var length = { !length(text = "substring($text, $offset)", prefix = "string-length($prefix)", length = "$max") } !{$prefix} !{normalize-space(translate(substring($text, $offset, $length), ' ', ' '))} X:text { } !wrap(text = "substring($text, $length + $offset)", prefix = "$indent") } } X:template length(text, prefix, length) { X:var break = "substring-before(substring($text, 1, $length - $prefix + string-length($br)), $br)" X:choose { X:when "$break" { !{string-length($break)} } X:when "$length = 0" { !{$max - $prefix} } X:when "string-length($text) + $prefix <= $length" { !{$length - $prefix} } X:when "substring($text, $length - $prefix + 1, 1) = ' '" { !{$length - $prefix + 1} } X:otherwise { !length(text = "$text", prefix = "$prefix", length = "$length - 1") } } } X:template = "at" {@} X:template = "br" { !{$br} } X:template = "nobr" { !{translate(., ' ', ' ')} } }