You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by jo...@apache.org on 2017/01/31 09:52:09 UTC

svn commit: r1781045 [46/50] - in /httpd/httpd/branches/2.4.x-openssl-1.1.0-compat: ./ build/ docs/man/ docs/manual/ docs/manual/developer/ docs/manual/faq/ docs/manual/howto/ docs/manual/misc/ docs/manual/mod/ docs/manual/platform/ docs/manual/program...

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.ko.euc-kr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.ko.euc-kr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.ko.euc-kr [euc-kr] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.ko.euc-kr [euc-kr] Tue Jan 31 09:52:02 2017
@@ -110,7 +110,7 @@
 <a href="../tr/vhosts/" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/vhosts/" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">\ubaa8\ub4c8</a> | <a href="../mod/directives.html">\uc9c0\uc2dc\uc5b4\ub4e4</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">\uc6a9\uc5b4</a> | <a href="../sitemap.html">\uc0ac\uc774\ud2b8\ub9f5</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.tr.utf8
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.tr.utf8?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.tr.utf8 [utf-8] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.tr.utf8 [utf-8] Tue Jan 31 09:52:02 2017
@@ -114,7 +114,7 @@
 <a href="../tr/vhosts/" title="T�rk�e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/vhosts/" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt\u0131nda lisansl\u0131d\u0131r.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt\u0131nda lisansl\u0131d\u0131r.</p>
 <p class="menu"><a href="../mod/">Mod�ller</a> | <a href="../mod/directives.html">Y�nergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritas\u0131</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.zh-cn.utf8
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.zh-cn.utf8?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.zh-cn.utf8 (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.html.zh-cn.utf8 Tue Jan 31 09:52:02 2017
@@ -96,7 +96,7 @@
 <a href="../tr/vhosts/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/vhosts/" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />基于 <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> 许可证.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />基于 <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> 许可证.</p>
 <p class="menu"><a href="../mod/">模块</a> | <a href="../mod/directives.html">指令</a> | <a href="http://wiki.apache.org/httpd/FAQ">常见问题</a> | <a href="../glossary.html">术语</a> | <a href="../sitemap.html">网站导航</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.xml.fr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.xml.fr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.xml.fr [iso-8859-1] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/index.xml.fr [utf-8] Tue Jan 31 09:52:02 2017
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
 <!-- English Revision: 1753873 -->

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.en
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.en?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.en (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.en Tue Jan 31 09:52:02 2017
@@ -201,7 +201,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.fr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.fr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.fr (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.fr Tue Jan 31 09:52:02 2017
@@ -204,7 +204,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.ja.utf8
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.ja.utf8?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.ja.utf8 [utf-8] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.ja.utf8 [utf-8] Tue Jan 31 09:52:02 2017
@@ -181,7 +181,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />\u3053\u306e\u6587\u66f8\u306f <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> \u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />\u3053\u306e\u6587\u66f8\u306f <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> \u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002.</p>
 <p class="menu"><a href="../mod/">\u30e2\u30b8\u30e5\u30fc\u30eb</a> | <a href="../mod/directives.html">\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">\u7528\u8a9e</a> | <a href="../sitemap.html">\u30b5\u30a4\u30c8\u30de\u30c3\u30d7</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.ko.euc-kr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.ko.euc-kr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.ko.euc-kr [euc-kr] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.ko.euc-kr [euc-kr] Tue Jan 31 09:52:02 2017
@@ -171,7 +171,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">\ubaa8\ub4c8</a> | <a href="../mod/directives.html">\uc9c0\uc2dc\uc5b4\ub4e4</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">\uc6a9\uc5b4</a> | <a href="../sitemap.html">\uc0ac\uc774\ud2b8\ub9f5</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.tr.utf8
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.tr.utf8?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.tr.utf8 [utf-8] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.html.tr.utf8 [utf-8] Tue Jan 31 09:52:02 2017
@@ -202,7 +202,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt\u0131nda lisansl\u0131d\u0131r.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt\u0131nda lisansl\u0131d\u0131r.</p>
 <p class="menu"><a href="../mod/">Mod�ller</a> | <a href="../mod/directives.html">Y�nergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritas\u0131</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.xml.fr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.xml.fr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.xml.fr [iso-8859-1] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/ip-based.xml.fr [utf-8] Tue Jan 31 09:52:02 2017
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
 <!-- English Revision: 1673563 -->

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.en
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.en?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.en (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.en Tue Jan 31 09:52:02 2017
@@ -328,7 +328,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.fr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.fr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.fr (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.fr Tue Jan 31 09:52:02 2017
@@ -343,7 +343,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.ko.euc-kr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.ko.euc-kr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.ko.euc-kr [euc-kr] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.ko.euc-kr [euc-kr] Tue Jan 31 09:52:02 2017
@@ -444,7 +444,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">\ubaa8\ub4c8</a> | <a href="../mod/directives.html">\uc9c0\uc2dc\uc5b4\ub4e4</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">\uc6a9\uc5b4</a> | <a href="../sitemap.html">\uc0ac\uc774\ud2b8\ub9f5</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.tr.utf8
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.tr.utf8?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.tr.utf8 [utf-8] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.html.tr.utf8 [utf-8] Tue Jan 31 09:52:02 2017
@@ -315,7 +315,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt\u0131nda lisansl\u0131d\u0131r.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt\u0131nda lisansl\u0131d\u0131r.</p>
 <p class="menu"><a href="../mod/">Mod�ller</a> | <a href="../mod/directives.html">Y�nergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritas\u0131</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.xml.fr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.xml.fr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.xml.fr [iso-8859-1] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/mass.xml.fr [utf-8] Tue Jan 31 09:52:02 2017
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" ?>
 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
 <!-- English Revision: 1673563 -->

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.de
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.de?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.de (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.de Tue Jan 31 09:52:02 2017
@@ -290,7 +290,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Lizenziert unter der <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Lizenziert unter der <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">Module</a> | <a href="../mod/directives.html">Direktiven</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossar</a> | <a href="../sitemap.html">Seitenindex</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.en
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.en?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.en (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.en Tue Jan 31 09:52:02 2017
@@ -215,7 +215,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.fr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.fr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.fr (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.fr Tue Jan 31 09:52:02 2017
@@ -258,7 +258,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.ja.utf8
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.ja.utf8?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.ja.utf8 [utf-8] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.ja.utf8 [utf-8] Tue Jan 31 09:52:02 2017
@@ -294,7 +294,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />\u3053\u306e\u6587\u66f8\u306f <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> \u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />\u3053\u306e\u6587\u66f8\u306f <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> \u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002.</p>
 <p class="menu"><a href="../mod/">\u30e2\u30b8\u30e5\u30fc\u30eb</a> | <a href="../mod/directives.html">\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">\u7528\u8a9e</a> | <a href="../sitemap.html">\u30b5\u30a4\u30c8\u30de\u30c3\u30d7</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.ko.euc-kr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.ko.euc-kr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.ko.euc-kr [euc-kr] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.ko.euc-kr [euc-kr] Tue Jan 31 09:52:02 2017
@@ -257,7 +257,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">\ubaa8\ub4c8</a> | <a href="../mod/directives.html">\uc9c0\uc2dc\uc5b4\ub4e4</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">\uc6a9\uc5b4</a> | <a href="../sitemap.html">\uc0ac\uc774\ud2b8\ub9f5</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.tr.utf8
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.tr.utf8?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.tr.utf8 [utf-8] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.html.tr.utf8 [utf-8] Tue Jan 31 09:52:02 2017
@@ -229,7 +229,7 @@ var comments_identifier = 'http://httpd.
     }
 })(window, document);
 //--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2016 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt\u0131nda lisansl\u0131d\u0131r.</p>
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> alt\u0131nda lisansl\u0131d\u0131r.</p>
 <p class="menu"><a href="../mod/">Mod�ller</a> | <a href="../mod/directives.html">Y�nergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritas\u0131</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
 if (typeof(prettyPrint) !== 'undefined') {
     prettyPrint();

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.xml.fr
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.xml.fr?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.xml.fr [iso-8859-1] (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/docs/manual/vhosts/name-based.xml.fr [utf-8] Tue Jan 31 09:52:02 2017
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='ISO-8859-1' ?>
+<?xml version='1.0' ?>
 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
 <!-- English Revision: 1673563 -->

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/ap_mmn.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/ap_mmn.h?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/ap_mmn.h (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/ap_mmn.h Tue Jan 31 09:52:02 2017
@@ -487,6 +487,13 @@
  * 20120211.65 (2.4.24-dev) Add ap_check_pipeline().
  * 20120211.66 (2.4.24-dev) Rename ap_proxy_check_backend() to
  *                          ap_proxy_check_connection().
+ * 20120211.67 (2.4.24-dev) Add http09_enable, http_conformance, and
+ *                          http_methods to core_server_config
+ *                          Add ap_scan_http_field_token(),
+ *                          ap_scan_http_field_content(),
+ *                          and ap_scan_vchar_obstext()
+ *                          Replaced fold boolean with with multiple bit flags
+ *                          to ap_[r]getline()
  */
 
 #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
@@ -494,7 +501,7 @@
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
 #define MODULE_MAGIC_NUMBER_MAJOR 20120211
 #endif
-#define MODULE_MAGIC_NUMBER_MINOR 66                   /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 67                   /* 0...n */
 
 /**
  * Determine if the server's current MODULE_MAGIC_NUMBER is at least a

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/ap_release.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/ap_release.h?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/ap_release.h (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/ap_release.h Tue Jan 31 09:52:02 2017
@@ -23,7 +23,7 @@
 #define AP_RELEASE_H
 
 #define AP_SERVER_COPYRIGHT \
-  "Copyright 2016 The Apache Software Foundation."
+  "Copyright 2017 The Apache Software Foundation."
 
 /*
  * The below defines the base string of the Server: header. Additional
@@ -43,7 +43,7 @@
 
 #define AP_SERVER_MAJORVERSION_NUMBER 2
 #define AP_SERVER_MINORVERSION_NUMBER 4
-#define AP_SERVER_PATCHLEVEL_NUMBER   24
+#define AP_SERVER_PATCHLEVEL_NUMBER   26
 #define AP_SERVER_DEVBUILD_BOOLEAN    1
 
 /* Synchronize the above with docs/manual/style/version.ent */

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_config.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_config.h?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_config.h (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_config.h Tue Jan 31 09:52:02 2017
@@ -410,6 +410,23 @@ struct module_struct {
 };
 
 /**
+ * The AP_MAYBE_UNUSED macro is used for variable declarations that
+ * might potentially exhibit "unused var" warnings on some compilers if
+ * left untreated.
+ * Since static intializers are not part of the C language (C89), making
+ * (void) usage is not possible. However many compiler have proprietary 
+ * mechanism to suppress those warnings.  
+ */
+#ifdef AP_MAYBE_UNUSED
+#elif defined(__GNUC__)
+# define AP_MAYBE_UNUSED(x) x __attribute__((unused)) 
+#elif defined(__LCLINT__)
+# define AP_MAYBE_UNUSED(x) /*@unused@*/ x  
+#else
+# define AP_MAYBE_UNUSED(x) x
+#endif
+    
+/**
  * The APLOG_USE_MODULE macro is used choose which module a file belongs to.
  * This is necessary to allow per-module loglevel configuration.
  *
@@ -424,7 +441,7 @@ struct module_struct {
  */
 #define APLOG_USE_MODULE(foo) \
     extern module AP_MODULE_DECLARE_DATA foo##_module;                  \
-    static int * const aplog_module_index = &(foo##_module.module_index)
+    AP_MAYBE_UNUSED(static int * const aplog_module_index) = &(foo##_module.module_index)
 
 /**
  * AP_DECLARE_MODULE is a convenience macro that combines a call of

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_core.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_core.h?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_core.h (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_core.h Tue Jan 31 09:52:02 2017
@@ -723,10 +723,24 @@ typedef struct {
 #define AP_MERGE_TRAILERS_DISABLE  2
     int merge_trailers;
 
-
-
     apr_array_header_t *protocols;
     int protocols_honor_order;
+
+#define AP_HTTP09_UNSET   0
+#define AP_HTTP09_ENABLE  1
+#define AP_HTTP09_DISABLE 2
+    char http09_enable;
+
+#define AP_HTTP_CONFORMANCE_UNSET     0
+#define AP_HTTP_CONFORMANCE_UNSAFE    1
+#define AP_HTTP_CONFORMANCE_STRICT    2
+    char http_conformance;
+
+#define AP_HTTP_METHODS_UNSET         0
+#define AP_HTTP_METHODS_LENIENT       1
+#define AP_HTTP_METHODS_REGISTERED    2
+    char http_methods;
+
 } core_server_config;
 
 /* for AddOutputFiltersByType in core.c */

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_protocol.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_protocol.h?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_protocol.h (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/http_protocol.h Tue Jan 31 09:52:02 2017
@@ -582,17 +582,22 @@ AP_DECLARE(int) ap_get_basic_auth_pw(req
  */
 AP_CORE_DECLARE(void) ap_parse_uri(request_rec *r, const char *uri);
 
+#define AP_GETLINE_FOLD 1 /* Whether to merge continuation lines */
+#define AP_GETLINE_CRLF 2 /*Whether line ends must be in the form CR LF */
+
 /**
  * Get the next line of input for the request
  * @param s The buffer into which to read the line
  * @param n The size of the buffer
  * @param r The request
- * @param fold Whether to merge continuation lines
+ * @param flags Bit flag of multiple parsing options
+ *              AP_GETLINE_FOLD Whether to merge continuation lines
+ *              AP_GETLINE_CRLF Whether line ends must be in the form CR LF
  * @return The length of the line, if successful
  *         n, if the line is too big to fit in the buffer
  *         -1 for miscellaneous errors
  */
-AP_DECLARE(int) ap_getline(char *s, int n, request_rec *r, int fold);
+AP_DECLARE(int) ap_getline(char *s, int n, request_rec *r, int flags);
 
 /**
  * Get the next line of input for the request
@@ -610,7 +615,9 @@ AP_DECLARE(int) ap_getline(char *s, int
  * @param n The size of the buffer
  * @param read The length of the line.
  * @param r The request
- * @param fold Whether to merge continuation lines
+ * @param flags Bit flag of multiple parsing options
+ *              AP_GETLINE_FOLD Whether to merge continuation lines
+ *              AP_GETLINE_CRLF Whether line ends must be in the form CR LF
  * @param bb Working brigade to use when reading buckets
  * @return APR_SUCCESS, if successful
  *         APR_ENOSPC, if the line is too big to fit in the buffer
@@ -619,7 +626,7 @@ AP_DECLARE(int) ap_getline(char *s, int
 #if APR_CHARSET_EBCDIC
 AP_DECLARE(apr_status_t) ap_rgetline(char **s, apr_size_t n,
                                      apr_size_t *read,
-                                     request_rec *r, int fold,
+                                     request_rec *r, int flags,
                                      apr_bucket_brigade *bb);
 #else /* ASCII box */
 #define ap_rgetline(s, n, read, r, fold, bb) \
@@ -629,7 +636,7 @@ AP_DECLARE(apr_status_t) ap_rgetline(cha
 /** @see ap_rgetline */
 AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n,
                                           apr_size_t *read,
-                                          request_rec *r, int fold,
+                                          request_rec *r, int flags,
                                           apr_bucket_brigade *bb);
 
 /**

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/httpd.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/httpd.h?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/httpd.h (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/httpd.h Tue Jan 31 09:52:02 2017
@@ -1585,6 +1585,28 @@ AP_DECLARE(int) ap_find_etag_weak(apr_po
  */
 AP_DECLARE(int) ap_find_etag_strong(apr_pool_t *p, const char *line, const char *tok);
 
+/* Scan a string for field content chars, as defined by RFC7230 section 3.2
+ * including VCHAR/obs-text, as well as HT and SP
+ * @param ptr The string to scan
+ * @return A pointer to the first (non-HT) ASCII ctrl character.
+ * @note lws and trailing whitespace are scanned, the caller is responsible
+ * for trimming leading and trailing whitespace
+ */
+AP_DECLARE(const char *) ap_scan_http_field_content(const char *ptr);
+
+/* Scan a string for token characters, as defined by RFC7230 section 3.2.6 
+ * @param ptr The string to scan
+ * @return A pointer to the first non-token character.
+ */
+AP_DECLARE(const char *) ap_scan_http_token(const char *ptr);
+
+/* Scan a string for visible ASCII (0x21-0x7E) or obstext (0x80+)
+ * and return a pointer to the first SP/CTL/NUL character encountered.
+ * @param ptr The string to scan
+ * @return A pointer to the first SP/CTL character.
+ */
+AP_DECLARE(const char *) ap_scan_vchar_obstext(const char *ptr);
+
 /**
  * Retrieve an array of tokens in the format "1#token" defined in RFC2616. Only
  * accepts ',' as a delimiter, does not accept quoted strings, and errors on

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/scoreboard.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/scoreboard.h?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/scoreboard.h (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/include/scoreboard.h Tue Jan 31 09:52:02 2017
@@ -26,7 +26,7 @@
 extern "C" {
 #endif
 
-#ifdef HAVE_SYS_TIMES_H
+#if APR_HAVE_SYS_TIME_H
 #include <sys/time.h>
 #include <sys/times.h>
 #endif

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/aaa/mod_auth_digest.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/aaa/mod_auth_digest.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/aaa/mod_auth_digest.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/aaa/mod_auth_digest.c Tue Jan 31 09:52:02 2017
@@ -18,7 +18,7 @@
  * mod_auth_digest: MD5 digest authentication
  *
  * Originally by Alexei Kosut <ak...@nueva.pvt.k12.ca.us>
- * Updated to RFC-2617 by Ronald Tschal�r <ro...@innovation.ch>
+ * Updated to RFC-2617 by Ronald Tschal�r <ro...@innovation.ch>
  * based on mod_auth, by Rob McCool and Robert S. Thau
  *
  * This module an updated version of modules/standard/mod_digest.c
@@ -232,7 +232,7 @@ static apr_status_t initialize_secret(se
 {
     apr_status_t status;
 
-    ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s, APLOGNO(01757)
+    ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, APLOGNO(01757)
                  "generating secret for digest authentication ...");
 
 #if APR_HAS_RANDOM
@@ -261,6 +261,26 @@ static void log_error_and_cleanup(char *
     cleanup_tables(NULL);
 }
 
+/* RMM helper functions that behave like single-step malloc/free. */
+
+static void *rmm_malloc(apr_rmm_t *rmm, apr_size_t size)
+{
+    apr_rmm_off_t offset = apr_rmm_malloc(rmm, size);
+
+    if (!offset) {
+        return NULL;
+    }
+
+    return apr_rmm_addr_get(rmm, offset);
+}
+
+static apr_status_t rmm_free(apr_rmm_t *rmm, void *alloc)
+{
+    apr_rmm_off_t offset = apr_rmm_offset_get(rmm, alloc);
+
+    return apr_rmm_free(rmm, offset);
+}
+
 #if APR_HAS_SHARED_MEMORY
 
 static int initialize_tables(server_rec *s, apr_pool_t *ctx)
@@ -299,8 +319,8 @@ static int initialize_tables(server_rec
         return !OK;
     }
 
-    client_list = apr_rmm_addr_get(client_rmm, apr_rmm_malloc(client_rmm, sizeof(*client_list) +
-                                                          sizeof(client_entry*)*num_buckets));
+    client_list = rmm_malloc(client_rmm, sizeof(*client_list) +
+                                         sizeof(client_entry *) * num_buckets);
     if (!client_list) {
         log_error_and_cleanup("failed to allocate shared memory", -1, s);
         return !OK;
@@ -322,7 +342,7 @@ static int initialize_tables(server_rec
 
     /* setup opaque */
 
-    opaque_cntr = apr_rmm_addr_get(client_rmm, apr_rmm_malloc(client_rmm, sizeof(*opaque_cntr)));
+    opaque_cntr = rmm_malloc(client_rmm, sizeof(*opaque_cntr));
     if (opaque_cntr == NULL) {
         log_error_and_cleanup("failed to allocate shared memory", -1, s);
         return !OK;
@@ -339,7 +359,7 @@ static int initialize_tables(server_rec
 
     /* setup one-time-nonce counter */
 
-    otn_counter = apr_rmm_addr_get(client_rmm, apr_rmm_malloc(client_rmm, sizeof(*otn_counter)));
+    otn_counter = rmm_malloc(client_rmm, sizeof(*otn_counter));
     if (otn_counter == NULL) {
         log_error_and_cleanup("failed to allocate shared memory", -1, s);
         return !OK;
@@ -779,7 +799,7 @@ static client_entry *get_client(unsigned
  * last entry in each bucket and updates the counters. Returns the
  * number of removed entries.
  */
-static long gc(void)
+static long gc(server_rec *s)
 {
     client_entry *entry, *prev;
     unsigned long num_removed = 0, idx;
@@ -789,6 +809,12 @@ static long gc(void)
     for (idx = 0; idx < client_list->tbl_len; idx++) {
         entry = client_list->table[idx];
         prev  = NULL;
+
+        if (!entry) {
+            /* This bucket is empty. */
+            continue;
+        }
+
         while (entry->next) {   /* find last entry */
             prev  = entry;
             entry = entry->next;
@@ -800,8 +826,16 @@ static long gc(void)
             client_list->table[idx] = NULL;
         }
         if (entry) {                    /* remove entry */
-            apr_rmm_free(client_rmm, apr_rmm_offset_get(client_rmm, entry));
+            apr_status_t err;
+
+            err = rmm_free(client_rmm, entry);
             num_removed++;
+
+            if (err) {
+                /* Nothing we can really do but log... */
+                ap_log_error(APLOG_MARK, APLOG_ERR, err, s, APLOGNO()
+                             "Failed to free auth_digest client allocation");
+            }
         }
     }
 
@@ -835,16 +869,16 @@ static client_entry *add_client(unsigned
 
     /* try to allocate a new entry */
 
-    entry = apr_rmm_addr_get(client_rmm, apr_rmm_malloc(client_rmm, sizeof(client_entry)));
+    entry = rmm_malloc(client_rmm, sizeof(client_entry));
     if (!entry) {
-        long num_removed = gc();
+        long num_removed = gc(s);
         ap_log_error(APLOG_MARK, APLOG_INFO, 0, s, APLOGNO(01766)
                      "gc'd %ld client entries. Total new clients: "
                      "%ld; Total removed clients: %ld; Total renewed clients: "
                      "%ld", num_removed,
                      client_list->num_created - client_list->num_renewed,
                      client_list->num_removed, client_list->num_renewed);
-        entry = apr_rmm_addr_get(client_rmm, apr_rmm_malloc(client_rmm, sizeof(client_entry)));
+        entry = rmm_malloc(client_rmm, sizeof(client_entry));
         if (!entry) {
             ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, APLOGNO(01767)
                          "unable to allocate new auth_digest client");

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/aaa/mod_auth_form.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/aaa/mod_auth_form.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/aaa/mod_auth_form.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/aaa/mod_auth_form.c Tue Jan 31 09:52:02 2017
@@ -842,7 +842,7 @@ static int check_authn(request_rec * r,
             break;
         }
 
-        /* If we're returning 403, tell them to try again. */
+        /* If we're returning 401, tell them to try again. */
         if (return_code == HTTP_UNAUTHORIZED) {
             note_cookie_auth_failure(r);
         }

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/NWGNUsocachmem
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/NWGNUsocachmem?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/NWGNUsocachmem (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/NWGNUsocachmem Tue Jan 31 09:52:02 2017
@@ -26,6 +26,7 @@ XINCDIRS	+= \
 			$(APR)/include \
 			$(APRUTIL)/include \
 			$(AP_WORK)/include \
+			$(STDMOD)/generators \
 			$(AP_WORK)/server/mpm/netware \
 			$(NWOS) \
 			$(EOLIST)

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_storage.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_storage.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_storage.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_storage.c Tue Jan 31 09:52:02 2017
@@ -115,7 +115,7 @@ int cache_create_entity(cache_request_re
 
 static int filter_header_do(void *v, const char *key, const char *val)
 {
-    if ((*key == 'W' || *key == 'w') && !strcasecmp(key, "Warning")
+    if ((*key == 'W' || *key == 'w') && !ap_cstr_casecmp(key, "Warning")
             && *val == '1') {
         /* any stored Warning headers with warn-code 1xx (see section
          * 14.46) MUST be deleted from the cache entry and the forwarded
@@ -129,7 +129,7 @@ static int filter_header_do(void *v, con
 }
 static int remove_header_do(void *v, const char *key, const char *val)
 {
-    if ((*key == 'W' || *key == 'w') && !strcasecmp(key, "Warning")) {
+    if ((*key == 'W' || *key == 'w') && !ap_cstr_casecmp(key, "Warning")) {
         /* any stored Warning headers with warn-code 2xx MUST be retained
          * in the cache entry and the forwarded response.
          */
@@ -427,7 +427,9 @@ int cache_select(cache_request_rec *cach
 }
 
 static apr_status_t cache_canonicalise_key(request_rec *r, apr_pool_t* p,
-        const char *uri, apr_uri_t *parsed_uri, const char **key)
+                                           const char *uri, const char *query,
+                                           apr_uri_t *parsed_uri,
+                                           const char **key)
 {
     cache_server_conf *conf;
     char *port_str, *hn, *lcs;
@@ -563,7 +565,7 @@ static apr_status_t cache_canonicalise_k
      * if needed.
      */
     path = uri;
-    querystring = parsed_uri->query;
+    querystring = apr_pstrdup(p, query ? query : parsed_uri->query);
     if (conf->ignore_session_id->nelts) {
         int i;
         char **identifier;
@@ -588,7 +590,7 @@ static apr_status_t cache_canonicalise_k
             /*
              * Check if the identifier is in the querystring and cut it out.
              */
-            if (querystring) {
+            if (querystring && *querystring) {
                 /*
                  * First check if the identifier is at the beginning of the
                  * querystring and followed by a '='
@@ -605,7 +607,7 @@ static apr_status_t cache_canonicalise_k
                      * identifier with a '&' and append a '='
                      */
                     complete = apr_pstrcat(p, "&", *identifier, "=", NULL);
-                    param = strstr(querystring, complete);
+                    param = ap_strstr_c(querystring, complete);
                     /* If we found something we are sitting on the '&' */
                     if (param) {
                         param++;
@@ -669,7 +671,11 @@ static apr_status_t cache_canonicalise_k
 apr_status_t cache_generate_key_default(request_rec *r, apr_pool_t* p,
         const char **key)
 {
-    return cache_canonicalise_key(r, p, r->uri, &r->parsed_uri, key);
+    /* We want the actual query-string, which may differ from
+     * r->parsed_uri.query (immutable), so use "" (not NULL).
+     */
+    const char *args = r->args ? r->args : "";
+    return cache_canonicalise_key(r, p, r->uri, args, &r->parsed_uri, key);
 }
 
 /*
@@ -709,12 +715,13 @@ int cache_invalidate(cache_request_rec *
 
     location = apr_table_get(r->headers_out, "Location");
     if (location) {
-        if (APR_SUCCESS != apr_uri_parse(r->pool, location, &location_uri)
-                || APR_SUCCESS
-                        != cache_canonicalise_key(r, r->pool, location,
-                                &location_uri, &location_key)
-                || !(r->parsed_uri.hostname && location_uri.hostname
-                        && !strcmp(r->parsed_uri.hostname,
+        if (apr_uri_parse(r->pool, location, &location_uri)
+                || cache_canonicalise_key(r, r->pool,
+                                          location, NULL,
+                                          &location_uri, &location_key)
+                || !(r->parsed_uri.hostname
+                     && location_uri.hostname
+                     && !strcmp(r->parsed_uri.hostname,
                                 location_uri.hostname))) {
             location_key = NULL;
         }
@@ -722,14 +729,15 @@ int cache_invalidate(cache_request_rec *
 
     content_location = apr_table_get(r->headers_out, "Content-Location");
     if (content_location) {
-        if (APR_SUCCESS
-                != apr_uri_parse(r->pool, content_location,
-                        &content_location_uri)
-                || APR_SUCCESS
-                        != cache_canonicalise_key(r, r->pool, content_location,
-                                &content_location_uri, &content_location_key)
-                || !(r->parsed_uri.hostname && content_location_uri.hostname
-                        && !strcmp(r->parsed_uri.hostname,
+        if (apr_uri_parse(r->pool, content_location,
+                          &content_location_uri)
+                || cache_canonicalise_key(r, r->pool,
+                                          content_location, NULL,
+                                          &content_location_uri,
+                                          &content_location_key)
+                || !(r->parsed_uri.hostname
+                     && content_location_uri.hostname
+                     && !strcmp(r->parsed_uri.hostname,
                                 content_location_uri.hostname))) {
             content_location_key = NULL;
         }

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_util.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_util.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_util.c Tue Jan 31 09:52:02 2017
@@ -31,8 +31,9 @@ extern module AP_MODULE_DECLARE_DATA cac
  * in "filter". All but the path comparisons are case-insensitive.
  */
 static int uri_meets_conditions(const apr_uri_t *filter, const int pathlen,
-                                const apr_uri_t *url)
+                                request_rec *r)
 {
+    const apr_uri_t *url = &r->parsed_uri;
 
     /* Scheme, hostname port and local part. The filter URI and the
      * URI we test may have the following shapes:
@@ -55,7 +56,7 @@ static int uri_meets_conditions(const ap
     }
     else {
         /* The URI scheme must be present and identical except for case. */
-        if (!url->scheme || strcasecmp(filter->scheme, url->scheme)) {
+        if (!url->scheme || ap_cstr_casecmp(filter->scheme, url->scheme)) {
             return 0;
         }
 
@@ -113,7 +114,7 @@ static int uri_meets_conditions(const ap
     /* For HTTP caching purposes, an empty (NULL) path is equivalent to
      * a single "/" path. RFCs 3986/2396
      */
-    if (!url->path) {
+    if (!r->uri) {
         if (*filter->path == '/' && pathlen == 1) {
             return 1;
         }
@@ -125,7 +126,7 @@ static int uri_meets_conditions(const ap
     /* Url has met all of the filter conditions so far, determine
      * if the paths match.
      */
-    return !strncmp(filter->path, url->path, pathlen);
+    return !strncmp(filter->path, r->uri, pathlen);
 }
 
 static cache_provider_list *get_provider(request_rec *r, struct cache_enable *ent,
@@ -167,8 +168,7 @@ static cache_provider_list *get_provider
 }
 
 cache_provider_list *cache_get_providers(request_rec *r,
-        cache_server_conf *conf,
-        apr_uri_t uri)
+                                         cache_server_conf *conf)
 {
     cache_dir_conf *dconf = ap_get_module_config(r->per_dir_config, &cache_module);
     cache_provider_list *providers = NULL;
@@ -183,7 +183,7 @@ cache_provider_list *cache_get_providers
     for (i = 0; i < conf->cachedisable->nelts; i++) {
         struct cache_disable *ent =
                                (struct cache_disable *)conf->cachedisable->elts;
-        if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, &uri)) {
+        if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, r)) {
             /* Stop searching now. */
             return NULL;
         }
@@ -200,7 +200,7 @@ cache_provider_list *cache_get_providers
     for (i = 0; i < conf->cacheenable->nelts; i++) {
         struct cache_enable *ent =
                                 (struct cache_enable *)conf->cacheenable->elts;
-        if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, &uri)) {
+        if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, r)) {
             providers = get_provider(r, &ent[i], providers);
         }
     }
@@ -284,7 +284,25 @@ apr_status_t cache_try_lock(cache_server
 
     /* create the key if it doesn't exist */
     if (!cache->key) {
-        cache_generate_key(r, r->pool, &cache->key);
+        cache_handle_t *h;
+        /*
+         * Try to use the key of a possible open but stale cache
+         * entry if we have one.
+         */
+        if (cache->handle != NULL) {
+            h = cache->handle;
+        }
+        else {
+            h = cache->stale_handle;
+        }
+        if ((h != NULL) &&
+            (h->cache_obj != NULL) &&
+            (h->cache_obj->key != NULL)) {
+            cache->key = apr_pstrdup(r->pool, h->cache_obj->key);
+        }
+        else {
+            cache_generate_key(r, r->pool, &cache->key);
+        }
     }
 
     /* create a hashed filename from the key, and save it for later */
@@ -315,7 +333,7 @@ apr_status_t cache_try_lock(cache_server
     status = apr_stat(&finfo, lockname,
                 APR_FINFO_MTIME | APR_FINFO_NLINK, r->pool);
     if (!(APR_STATUS_IS_ENOENT(status)) && APR_SUCCESS != status) {
-        ap_log_rerror(APLOG_MARK, APLOG_ERR, APR_EEXIST, r, APLOGNO(00779)
+        ap_log_rerror(APLOG_MARK, APLOG_ERR, status, r, APLOGNO(00779)
                 "Could not stat a cache lock file: %s",
                 lockname);
         return status;
@@ -981,12 +999,7 @@ int ap_cache_control(request_rec *r, cac
         char *header = apr_pstrdup(r->pool, pragma_header);
         const char *token = cache_strqtok(header, CACHE_SEPARATOR, &last);
         while (token) {
-            /* handle most common quickest case... */
-            if (!strcmp(token, "no-cache")) {
-                cc->no_cache = 1;
-            }
-            /* ...then try slowest case */
-            else if (!strcasecmp(token, "no-cache")) {
+            if (!ap_cstr_casecmp(token, "no-cache")) {
                 cc->no_cache = 1;
             }
             token = cache_strqtok(NULL, CACHE_SEPARATOR, &last);
@@ -1003,52 +1016,36 @@ int ap_cache_control(request_rec *r, cac
             switch (token[0]) {
             case 'n':
             case 'N': {
-                /* handle most common quickest cases... */
-                if (!strcmp(token, "no-cache")) {
-                    cc->no_cache = 1;
-                }
-                else if (!strcmp(token, "no-store")) {
-                    cc->no_store = 1;
-                }
-                /* ...then try slowest cases */
-                else if (!strncasecmp(token, "no-cache", 8)) {
+                if (!ap_cstr_casecmpn(token, "no-cache", 8)) {
                     if (token[8] == '=') {
                         cc->no_cache_header = 1;
                     }
                     else if (!token[8]) {
                         cc->no_cache = 1;
                     }
-                    break;
                 }
-                else if (!strcasecmp(token, "no-store")) {
+                else if (!ap_cstr_casecmp(token, "no-store")) {
                     cc->no_store = 1;
                 }
-                else if (!strcasecmp(token, "no-transform")) {
+                else if (!ap_cstr_casecmp(token, "no-transform")) {
                     cc->no_transform = 1;
                 }
                 break;
             }
             case 'm':
             case 'M': {
-                /* handle most common quickest cases... */
-                if (!strcmp(token, "max-age=0")) {
-                    cc->max_age = 1;
-                    cc->max_age_value = 0;
-                }
-                else if (!strcmp(token, "must-revalidate")) {
-                    cc->must_revalidate = 1;
-                }
-                /* ...then try slowest cases */
-                else if (!strncasecmp(token, "max-age", 7)) {
+                if (!ap_cstr_casecmpn(token, "max-age", 7)) {
                     if (token[7] == '='
                             && !apr_strtoff(&offt, token + 8, &endp, 10)
                             && endp > token + 8 && !*endp) {
                         cc->max_age = 1;
                         cc->max_age_value = offt;
                     }
-                    break;
                 }
-                else if (!strncasecmp(token, "max-stale", 9)) {
+                else if (!ap_cstr_casecmp(token, "must-revalidate")) {
+                    cc->must_revalidate = 1;
+                }
+                else if (!ap_cstr_casecmpn(token, "max-stale", 9)) {
                     if (token[9] == '='
                             && !apr_strtoff(&offt, token + 10, &endp, 10)
                             && endp > token + 10 && !*endp) {
@@ -1059,63 +1056,51 @@ int ap_cache_control(request_rec *r, cac
                         cc->max_stale = 1;
                         cc->max_stale_value = -1;
                     }
-                    break;
                 }
-                else if (!strncasecmp(token, "min-fresh", 9)) {
+                else if (!ap_cstr_casecmpn(token, "min-fresh", 9)) {
                     if (token[9] == '='
                             && !apr_strtoff(&offt, token + 10, &endp, 10)
                             && endp > token + 10 && !*endp) {
                         cc->min_fresh = 1;
                         cc->min_fresh_value = offt;
                     }
-                    break;
-                }
-                else if (!strcasecmp(token, "must-revalidate")) {
-                    cc->must_revalidate = 1;
                 }
                 break;
             }
             case 'o':
             case 'O': {
-                if (!strcasecmp(token, "only-if-cached")) {
+                if (!ap_cstr_casecmp(token, "only-if-cached")) {
                     cc->only_if_cached = 1;
                 }
                 break;
             }
             case 'p':
             case 'P': {
-                /* handle most common quickest cases... */
-                if (!strcmp(token, "private")) {
-                    cc->private = 1;
-                }
-                /* ...then try slowest cases */
-                else if (!strcasecmp(token, "public")) {
+                if (!ap_cstr_casecmp(token, "public")) {
                     cc->public = 1;
                 }
-                else if (!strncasecmp(token, "private", 7)) {
+                else if (!ap_cstr_casecmpn(token, "private", 7)) {
                     if (token[7] == '=') {
                         cc->private_header = 1;
                     }
                     else if (!token[7]) {
                         cc->private = 1;
                     }
-                    break;
                 }
-                else if (!strcasecmp(token, "proxy-revalidate")) {
+                else if (!ap_cstr_casecmp(token, "proxy-revalidate")) {
                     cc->proxy_revalidate = 1;
                 }
                 break;
             }
             case 's':
             case 'S': {
-                if (!strncasecmp(token, "s-maxage", 8)) {
+                if (!ap_cstr_casecmpn(token, "s-maxage", 8)) {
                     if (token[8] == '='
                             && !apr_strtoff(&offt, token + 9, &endp, 10)
                             && endp > token + 9 && !*endp) {
                         cc->s_maxage = 1;
                         cc->s_maxage_value = offt;
                     }
-                    break;
                 }
                 break;
             }
@@ -1145,8 +1130,7 @@ static int cache_control_remove(request_
             switch (token[0]) {
             case 'n':
             case 'N': {
-                if (!strncmp(token, "no-cache", 8)
-                        || !strncasecmp(token, "no-cache", 8)) {
+                if (!ap_cstr_casecmpn(token, "no-cache", 8)) {
                     if (token[8] == '=') {
                         const char *header = cache_strqtok(token + 9,
                                 CACHE_SEPARATOR "\"", &slast);
@@ -1163,8 +1147,7 @@ static int cache_control_remove(request_
             }
             case 'p':
             case 'P': {
-                if (!strncmp(token, "private", 7)
-                        || !strncasecmp(token, "private", 7)) {
+                if (!ap_cstr_casecmpn(token, "private", 7)) {
                     if (token[7] == '=') {
                         const char *header = cache_strqtok(token + 8,
                                 CACHE_SEPARATOR "\"", &slast);

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_util.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_util.h?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_util.h (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/cache_util.h Tue Jan 31 09:52:02 2017
@@ -300,7 +300,7 @@ apr_status_t cache_remove_lock(cache_ser
         cache_request_rec *cache, request_rec *r, apr_bucket_brigade *bb);
 
 cache_provider_list *cache_get_providers(request_rec *r,
-        cache_server_conf *conf, apr_uri_t uri);
+                                         cache_server_conf *conf);
 
 /**
  * Get a value from a table, where the table may contain multiple

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_cache.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_cache.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_cache.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_cache.c Tue Jan 31 09:52:02 2017
@@ -103,7 +103,7 @@ static int cache_quick_handler(request_r
     /*
      * Which cache module (if any) should handle this request?
      */
-    if (!(providers = cache_get_providers(r, conf, r->parsed_uri))) {
+    if (!(providers = cache_get_providers(r, conf))) {
         return DECLINED;
     }
 
@@ -413,7 +413,7 @@ static int cache_handler(request_rec *r)
     /*
      * Which cache module (if any) should handle this request?
      */
-    if (!(providers = cache_get_providers(r, conf, r->parsed_uri))) {
+    if (!(providers = cache_get_providers(r, conf))) {
         return DECLINED;
     }
 
@@ -973,12 +973,20 @@ static apr_status_t cache_save_filter(ap
     /* Have we received a 304 response without any headers at all? Fall back to
      * the original headers in the original cached request.
      */
-    if (r->status == HTTP_NOT_MODIFIED && cache->stale_handle && !cc_out
-            && !pragma) {
-        cc_out = cache_table_getm(r->pool, cache->stale_handle->resp_hdrs,
-                "Cache-Control");
-        pragma = cache_table_getm(r->pool, cache->stale_handle->resp_hdrs,
-                "Pragma");
+    if (r->status == HTTP_NOT_MODIFIED && cache->stale_handle) {
+        if (!cc_out && !pragma) {
+            cc_out = cache_table_getm(r->pool, cache->stale_handle->resp_hdrs,
+                    "Cache-Control");
+            pragma = cache_table_getm(r->pool, cache->stale_handle->resp_hdrs,
+                    "Pragma");
+        }
+
+        /* 304 does not contain Content-Type and mod_mime regenerates the
+         * Content-Type based on the r->filename. This would lead to original
+         * Content-Type to be lost (overwriten by whatever mod_mime generates).
+         * We preserves the original Content-Type here. */
+        ap_set_content_type(r, apr_table_get(
+                cache->stale_handle->resp_hdrs, "Content-Type"));
     }
 
     /* Parse the cache control header */
@@ -1017,6 +1025,8 @@ static apr_status_t cache_save_filter(ap
              * include the following: an Expires header (section 14.21); a
              * "max-age", "s-maxage",  "must-revalidate", "proxy-revalidate",
              * "public" or "private" cache-control directive (section 14.9).
+             *
+             * FIXME: Wrong if cc_out has just an extension we don't know about 
              */
         }
         else {
@@ -1031,9 +1041,12 @@ static apr_status_t cache_save_filter(ap
         /* if a broken Expires header is present, don't cache it */
         reason = apr_pstrcat(p, "Broken expires header: ", exps, NULL);
     }
-    else if (!dconf->store_expired && exp != APR_DATE_BAD
+    else if (!control.s_maxage && !control.max_age
+            && !dconf->store_expired && exp != APR_DATE_BAD
             && exp < r->request_time) {
-        /* if a Expires header is in the past, don't cache it */
+        /* if a Expires header is in the past, don't cache it 
+         * Unless CC: s-maxage or max-age is present
+         */
         reason = "Expires header already expired; not cacheable";
     }
     else if (!dconf->store_expired && (control.must_revalidate
@@ -1177,8 +1190,8 @@ static apr_status_t cache_save_filter(ap
 
         ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, APLOGNO(02473) 
                 "cache: %s responded with an uncacheable 304, " 
-                "retrying the request. Reason: %s", 
-                r->unparsed_uri, reason);
+                "retrying the request %s. Reason: %s", 
+                cache->key, r->unparsed_uri, reason);
 
         /* we've got a cache conditional miss! tell anyone who cares */
         cache_run_cache_status(cache->handle, r, r->headers_out, AP_CACHE_MISS,
@@ -1212,8 +1225,8 @@ static apr_status_t cache_save_filter(ap
 
     if (reason) {
         ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00768)
-                "cache: %s not cached. Reason: %s", r->unparsed_uri,
-                reason);
+                "cache: %s not cached for request %s. Reason: %s",
+                cache->key, r->unparsed_uri, reason);
 
         /* we've got a cache miss! tell anyone who cares */
         cache_run_cache_status(cache->handle, r, r->headers_out, AP_CACHE_MISS,
@@ -1331,7 +1344,8 @@ static apr_status_t cache_save_filter(ap
     }
 
     ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00769)
-            "cache: Caching url: %s", r->unparsed_uri);
+            "cache: Caching url %s for request %s",
+            cache->key, r->unparsed_uri);
 
     /* We are actually caching this response. So it does not
      * make sense to remove this entity any more.
@@ -1387,7 +1401,26 @@ static apr_status_t cache_save_filter(ap
                 "replacing with now");
     }
 
+
+    /* CC has priority over Expires.  */
+    if (control.s_maxage || control.max_age) {
+        apr_int64_t x;
+
+        x = control.s_maxage ? control.s_maxage_value : control.max_age_value;
+        x = x * MSEC_ONE_SEC;
+
+        if (x < dconf->minex) {
+            x = dconf->minex;
+        }
+        if (x > dconf->maxex) {
+            x = dconf->maxex;
+        }
+        exp = date + x;
+    }
+
     /* if no expiry date then
+     *   if Cache-Control: s-maxage
+     *      expiry date = date + smaxage
      *   if Cache-Control: max-age
      *      expiry date = date + max-age
      *   else if lastmod
@@ -1395,28 +1428,9 @@ static apr_status_t cache_save_filter(ap
      *   else
      *      expire date = date + defaultexpire
      */
-    if (exp == APR_DATE_BAD) {
-
-        if (control.max_age) {
-            apr_int64_t x;
 
-            errno = 0;
-            x = control.max_age_value;
-            if (errno) {
-                x = dconf->defex;
-            }
-            else {
-                x = x * MSEC_ONE_SEC;
-            }
-            if (x < dconf->minex) {
-                x = dconf->minex;
-            }
-            if (x > dconf->maxex) {
-                x = dconf->maxex;
-            }
-            exp = date + x;
-        }
-        else if ((lastmod != APR_DATE_BAD) && (lastmod < date)) {
+    if (exp == APR_DATE_BAD) {
+        if ((lastmod != APR_DATE_BAD) && (lastmod < date)) {
             /* if lastmod == date then you get 0*conf->factor which results in
              * an expiration time of now. This causes some problems with
              * freshness calculations, so we choose the else path...
@@ -1558,6 +1572,9 @@ static apr_status_t cache_save_filter(ap
         /* let someone else attempt to cache */
         cache_remove_lock(conf, cache, r, NULL);
 
+        ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, APLOGNO(02971)
+                    "cache: serving %s (revalidated)", r->uri);
+
         return ap_pass_brigade(f->next, bb);
     }
 

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_cache_disk.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_cache_disk.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_cache_disk.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_cache_disk.c Tue Jan 31 09:52:02 2017
@@ -786,7 +786,7 @@ static apr_status_t read_table(cache_han
         /* ### What about APR_EOF? */
         rv = apr_file_gets(w, MAX_STRING_LEN - 1, file);
         if (rv != APR_SUCCESS) {
-            ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(00717)
+            ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(00717)
                           "Premature end of cache headers.");
             return rv;
         }
@@ -865,6 +865,7 @@ static apr_status_t read_table(cache_han
 static apr_status_t recall_headers(cache_handle_t *h, request_rec *r)
 {
     disk_cache_object_t *dobj = (disk_cache_object_t *) h->cache_obj->vobj;
+    apr_status_t rv;
 
     /* This case should not happen... */
     if (!dobj->hdrs.fd) {
@@ -877,8 +878,18 @@ static apr_status_t recall_headers(cache
     h->resp_hdrs = apr_table_make(r->pool, 20);
 
     /* Call routine to read the header lines/status line */
-    read_table(h, r, h->resp_hdrs, dobj->hdrs.fd);
-    read_table(h, r, h->req_hdrs, dobj->hdrs.fd);
+    rv = read_table(h, r, h->resp_hdrs, dobj->hdrs.fd);
+    if (rv != APR_SUCCESS) { 
+        ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(02987) 
+                      "Error reading response headers from %s for %s",
+                      dobj->hdrs.file, dobj->name);
+    }
+    rv = read_table(h, r, h->req_hdrs, dobj->hdrs.fd);
+    if (rv != APR_SUCCESS) { 
+        ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(02988) 
+                      "Error reading request headers from %s for %s",
+                      dobj->hdrs.file, dobj->name);
+    }
 
     apr_file_close(dobj->hdrs.fd);
 

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_file_cache.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_file_cache.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_file_cache.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_file_cache.c Tue Jan 31 09:52:02 2017
@@ -312,10 +312,10 @@ static int file_cache_handler(request_re
     int errstatus;
     int rc = OK;
 
-    /* XXX: not sure if this is right yet
-     * see comment in http_core.c:default_handler
+    /* Bail out if r->handler isn't the default value, and doesn't look like a Content-Type
+     * XXX: Even though we made the user explicitly list each path to cache?
      */
-    if (ap_strcmp_match(r->handler, "*/*")) {
+    if (ap_strcmp_match(r->handler, "*/*") && !AP_IS_DEFAULT_HANDLER_NAME(r->handler)) {
         return DECLINED;
     }
 

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.c Tue Jan 31 09:52:02 2017
@@ -17,6 +17,7 @@
 
 #include "httpd.h"
 #include "http_config.h"
+#include "http_protocol.h"
 
 #include "apr.h"
 #include "apu_version.h"
@@ -33,6 +34,8 @@
 #include "ap_mpm.h"
 #include "http_log.h"
 #include "apr_memcache.h"
+#include "apr_strings.h"
+#include "mod_status.h"
 
 /* The underlying apr_memcache system is thread safe.. */
 #define MC_KEY_LEN 254
@@ -214,8 +217,14 @@ static apr_status_t socache_mc_store(ap_
         return APR_EINVAL;
     }
 
-    /* In APR-util - unclear what 'timeout' is, as it was not implemented */
-    rv = apr_memcache_set(ctx->mc, buf, (char*)ucaData, nData, 0, 0);
+    /* memcache needs time in seconds till expiry; fail if this is not
+     * positive *before* casting to unsigned (apr_uint32_t). */
+    expiry -= apr_time_now();
+    if (apr_time_sec(expiry) <= 0) {
+        return APR_EINVAL;
+    }
+    rv = apr_memcache_set(ctx->mc, buf, (char*)ucaData, nData,
+                          apr_time_sec(expiry), 0);
 
     if (rv != APR_SUCCESS) {
         ap_log_error(APLOG_MARK, APLOG_CRIT, rv, s, APLOGNO(00790)
@@ -287,7 +296,58 @@ static apr_status_t socache_mc_remove(ap
 
 static void socache_mc_status(ap_socache_instance_t *ctx, request_rec *r, int flags)
 {
-    /* TODO: Make a mod_status handler. meh. */
+    apr_memcache_t *rc = ctx->mc;
+    int i;
+
+    for (i = 0; i < rc->ntotal; i++) {
+        apr_memcache_server_t *ms;
+        apr_memcache_stats_t *stats;
+        apr_status_t rv;
+        char *br = (!(flags & AP_STATUS_SHORT) ? "<br />" : "");
+
+        ms = rc->live_servers[i];
+
+        ap_rprintf(r, "Memcached server: %s:%d [%s]%s\n", ms->host, (int)ms->port,
+                (ms->status == APR_MC_SERVER_LIVE) ? "Up" : "Down",
+                br);
+        rv = apr_memcache_stats(ms, r->pool, &stats);
+        if (rv != APR_SUCCESS)
+            continue;
+        if (!(flags & AP_STATUS_SHORT)) {
+            ap_rprintf(r, "<b>Version:</b> <i>%s</i> [%u bits], PID: <i>%u</i>, Uptime: <i>%u hrs</i> <br />\n",
+                    stats->version , stats->pointer_size, stats->pid, stats->uptime/3600);
+            ap_rprintf(r, "<b>Clients::</b> Structures: <i>%u</i>, Total: <i>%u</i>, Current: <i>%u</i> <br />\n",
+                    stats->connection_structures, stats->total_connections, stats->curr_connections);
+            ap_rprintf(r, "<b>Storage::</b> Total Items: <i>%u</i>, Current Items: <i>%u</i>, Bytes: <i>%" APR_UINT64_T_FMT "</i> <br />\n",
+                    stats->total_items, stats->curr_items, stats->bytes);
+            ap_rprintf(r, "<b>CPU::</b> System: <i>%u</i>, User: <i>%u</i> <br />\n",
+                    (unsigned)stats->rusage_system, (unsigned)stats->rusage_user );
+            ap_rprintf(r, "<b>Cache::</b> Gets: <i>%u</i>, Sets: <i>%u</i>, Hits: <i>%u</i>, Misses: <i>%u</i> <br />\n",
+                    stats->cmd_get, stats->cmd_set, stats->get_hits, stats->get_misses);
+            ap_rprintf(r, "<b>Net::</b> Input bytes: <i>%" APR_UINT64_T_FMT "</i>, Output bytes: <i>%" APR_UINT64_T_FMT "</i> <br />\n",
+                    stats->bytes_read, stats->bytes_written);
+            ap_rprintf(r, "<b>Misc::</b> Evictions: <i>%" APR_UINT64_T_FMT "</i>, MaxMem: <i>%u</i>, Threads: <i>%u</i> <br />\n",
+                    stats->evictions, stats->limit_maxbytes, stats->threads);
+            ap_rputs("<hr><br />\n", r);
+        }
+        else {
+            ap_rprintf(r, "Version: %s [%u bits], PID: %u, Uptime: %u hrs %s\n",
+                    stats->version , stats->pointer_size, stats->pid, stats->uptime/3600, br);
+            ap_rprintf(r, "Clients:: Structures: %d, Total: %d, Current: %u %s\n",
+                    stats->connection_structures, stats->total_connections, stats->curr_connections, br);
+            ap_rprintf(r, "Storage:: Total Items: %u, Current Items: %u, Bytes: %" APR_UINT64_T_FMT " %s\n",
+                    stats->total_items, stats->curr_items, stats->bytes, br);
+            ap_rprintf(r, "CPU:: System: %u, User: %u %s\n",
+                    (unsigned)stats->rusage_system, (unsigned)stats->rusage_user , br);
+            ap_rprintf(r, "Cache:: Gets: %u, Sets: %u, Hits: %u, Misses: %u %s\n",
+                    stats->cmd_get, stats->cmd_set, stats->get_hits, stats->get_misses, br);
+            ap_rprintf(r, "Net:: Input bytes: %" APR_UINT64_T_FMT ", Output bytes: %" APR_UINT64_T_FMT " %s\n",
+                    stats->bytes_read, stats->bytes_written, br);
+            ap_rprintf(r, "Misc:: Evictions: %" APR_UINT64_T_FMT ", MaxMem: %u, Threads: %u %s\n",
+                    stats->evictions, stats->limit_maxbytes, stats->threads, br);
+        }
+    }
+
 }
 
 static apr_status_t socache_mc_iterate(ap_socache_instance_t *instance,

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.dsp
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.dsp?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.dsp (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.dsp Tue Jan 31 09:52:02 2017
@@ -43,7 +43,7 @@ RSC=rc.exe
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "mod_socache_memcache_EXPORTS" /FD /c
-# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_socache_memcache_src" /FD /c
+# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /I "../generators" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_socache_memcache_src" /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -75,7 +75,7 @@ PostBuild_Cmds=if exist $(TargetPath).ma
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_socache_memcache_src" /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /I "../generators" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_socache_memcache_src" /FD /c
 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x409 /d "_DEBUG"

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.mak
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.mak?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.mak (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/cache/mod_socache_memcache.mak Tue Jan 31 09:52:02 2017
@@ -62,7 +62,7 @@ CLEAN :
     if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_socache_memcache_src" /FD /c 
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /I "../generators" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_socache_memcache_src" /FD /c 
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<
@@ -166,7 +166,7 @@ CLEAN :
     if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_socache_memcache_src" /FD /EHsc /c 
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /I "../generators" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_socache_memcache_src" /FD /EHsc /c 
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<

Modified: httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/filters/mod_ext_filter.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/filters/mod_ext_filter.c?rev=1781045&r1=1781044&r2=1781045&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/filters/mod_ext_filter.c (original)
+++ httpd/httpd/branches/2.4.x-openssl-1.1.0-compat/modules/filters/mod_ext_filter.c Tue Jan 31 09:52:02 2017
@@ -757,6 +757,13 @@ static int ef_unified_filter(ap_filter_t
             break;
         }
 
+        if (AP_BUCKET_IS_ERROR(b)) {
+            apr_bucket *cpy;
+            apr_bucket_copy(b, &cpy);
+            APR_BRIGADE_INSERT_TAIL(bb_tmp, cpy);
+            break;
+        }
+
         rv = apr_bucket_read(b, &data, &len, APR_BLOCK_READ);
         if (rv != APR_SUCCESS) {
             ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01463) "apr_bucket_read()");