1
0
mirror of https://github.com/apache/httpd.git synced 2025-09-11 09:30:48 +03:00

145 Commits

Author SHA1 Message Date
Stefan Eissing
a7a4ddad17 * mod_http2: adding support for the new trailer tests.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1861338 13f79535-47bb-0310-9956-ffa450edef68
2019-06-14 12:01:01 +00:00
Stefan Eissing
5b32f27b77 * modules/http2: reverting r1859724, as no good.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1860257 13f79535-47bb-0310-9956-ffa450edef68
2019-05-28 12:42:17 +00:00
Stefan Eissing
d5767ac605 *) mod_http2: internal code cleanups and simplifications. Common output code for
h2 and h2c protocols, using nested mutex locks for simplified calls. [Stefan Eissing]



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1859724 13f79535-47bb-0310-9956-ffa450edef68
2019-05-22 13:41:36 +00:00
Stefan Eissing
9b3dd74c58 *) mod_http2: new configuration directive: ``H2Padding numbits`` to control
padding of HTTP/2 payload frames. 'numbits' is a number from 0-8,
     controlling the range of padding bytes added to a frame. The actual number
     added is chosen randomly per frame. This applies to HEADERS, DATA and PUSH_PROMISE
     frames equally. The default continues to be 0, e.g. no padding. [Stefan Eissing] 
  
  *) mod_http2: ripping out all the h2_req_engine internal features now that mod_proxy_http2
     has no more need for it. Optional functions are still declared but no longer implemented.
     While previous mod_proxy_http2 will work with this, it is recommeneded to run the matching
     versions of both modules. [Stefan Eissing]
  
  *) mod_proxy_http2: changed mod_proxy_http2 implementation and fixed several bugs which
     resolve PR63170. The proxy module does now a single h2 request on the (reused)
     connection and returns. [Stefan Eissing]



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1854963 13f79535-47bb-0310-9956-ffa450edef68
2019-03-07 09:41:15 +00:00
Stefan Eissing
a721d5cc9e *) mod_http2: Configuration directoves H2Push and H2Upgrade can now be specified per
Location/Directory, e.g. disabling PUSH for a specific set of resources. [Stefan Eissing]

  *) mod_http2: HEAD requests to some module such as mod_cgid caused the stream to
     terminate improperly and cause a HTTP/2 PROTOCOL_ERROR. 
     Fixes <https://github.com/icing/mod_h2/issues/167>. [Michael Kaufmann]



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1852339 13f79535-47bb-0310-9956-ffa450edef68
2019-01-28 10:27:08 +00:00
Stefan Eissing
11654c1549 mod_http2: adding defensive code for stream EOS handling, in case the request handler
missed to signal it the normal way (eos buckets). Addresses github issues 
     https://github.com/icing/mod_h2/issues/164, https://github.com/icing/mod_h2/issues/167
     and https://github.com/icing/mod_h2/issues/170. 



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1843426 13f79535-47bb-0310-9956-ffa450edef68
2018-10-10 11:35:48 +00:00
Stefan Eissing
03e3ef23a8 On the trunk:
mod_http2: accurate reporting of h2 data input/output per request via mod_logio. Fixes
     an issue where output sizes where counted n-times on reused slave connections. See
     gituhub issue: https://github.com/icing/mod_h2/issues/158


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1828687 13f79535-47bb-0310-9956-ffa450edef68
2018-04-09 09:39:08 +00:00
Stefan Eissing
14cb0179e4 On the trunk:
mod_http2: removed obsolete stream detach code, no longer generating events
     in beam shutdown on pool destroy. 


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1822624 13f79535-47bb-0310-9956-ffa450edef68
2018-01-30 10:09:36 +00:00
Stefan Eissing
eb0fb1c922 On the trunk:
mod_http2: removing comments that documented that greenbytes has untransferable copyright to the sources. The rights, of course, remain unaffected, but maybe some people can sleep better.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1821371 13f79535-47bb-0310-9956-ffa450edef68
2018-01-17 14:41:30 +00:00
Jim Jagielski
1aa89da70c correct copyright/license headers
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1818306 13f79535-47bb-0310-9956-ffa450edef68
2017-12-15 17:10:14 +00:00
Stefan Eissing
e8a012377c mod_http2: version bump, partial fix for stream response getting stuck, see https://github.com/icing/mod_h2/issues/143
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1803420 13f79535-47bb-0310-9956-ffa450edef68
2017-07-30 11:57:35 +00:00
Stefan Eissing
7a8fab3a49 On the trunk:
mod_http2: disable and give warning when mpm_prefork is encountered. 
     The server will continue to work, but HTTP/2 will no longer be negotiated.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1800689 13f79535-47bb-0310-9956-ffa450edef68
2017-07-03 15:44:54 +00:00
Stefan Eissing
96c374a162 On the trunk:
mod_http2: explicit int conversions to silence warnings in mod-h2 build.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1790855 13f79535-47bb-0310-9956-ffa450edef68
2017-04-10 15:23:34 +00:00
Stefan Eissing
e4611af52b On the trunk:
mod_http2: less and more granular mutex use for improved performance.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1790284 13f79535-47bb-0310-9956-ffa450edef68
2017-04-05 14:49:25 +00:00
Stefan Eissing
3076d44593 On the trunk:
mod_http2/mod_proxy_http2: less read attempts on bucket beams that already
     delivered EOS/headers. Fixed bug in re-attempting proxy request after 
     connection error.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1790102 13f79535-47bb-0310-9956-ffa450edef68
2017-04-04 12:39:22 +00:00
Stefan Eissing
5440a7562b On the trunk:
mod_http2: move stuff from master connection to worker threads, increase spare slave connections, create output beams in worker when needed.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1789535 13f79535-47bb-0310-9956-ffa450edef68
2017-03-30 16:05:06 +00:00
Stefan Eissing
0dc4a16fa3 On the trunk:
mod_http2: better performance, eliminated need for nested locks and thread privates.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1789395 13f79535-47bb-0310-9956-ffa450edef68
2017-03-29 17:36:35 +00:00
Stefan Eissing
faa662844f On the trunk:
mod_http2: checking for required nghttp2 features to enabled dynamic input window resizing for streams (nghttp2 >= v1.5.0). Reporting as feature DWINS on startup.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1789279 13f79535-47bb-0310-9956-ffa450edef68
2017-03-29 07:04:07 +00:00
Stefan Eissing
ea16c6ebfe On the trunk:
mod_http2: input buffering and dynamic flow windows for increased throughput.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1788981 13f79535-47bb-0310-9956-ffa450edef68
2017-03-27 16:31:38 +00:00
Stefan Eissing
4df8e313bf On the trunk:
mod_http2: documentation and formatting



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1787051 13f79535-47bb-0310-9956-ffa450edef68
2017-03-15 14:19:51 +00:00
Stefan Eissing
c623d0aead On the trunk:
*) mod_http2: stream timeouts now change to vhost values once the request
     is parsed and processing starts. Initial values are taken from base
     server or SNI host as before. 



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1785683 13f79535-47bb-0310-9956-ffa450edef68
2017-03-06 16:36:41 +00:00
Stefan Eissing
5b6d27b08f On the trunk:
mod_http2: separate mutex instances for each bucket beam, resulting in 
     less lock contention. input beams only created when necessary.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1784571 13f79535-47bb-0310-9956-ffa450edef68
2017-02-27 14:30:50 +00:00
Stefan Eissing
ba5f020600 On the trunk:
mod_http2: signal eos on request input earlier, avoid unnecessary chunked, empty bodies, removing atomics from beam produce/consumed callback handling.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1784366 13f79535-47bb-0310-9956-ffa450edef68
2017-02-25 11:39:05 +00:00
Stefan Eissing
97d4f59f55 On the trunk:
*) mod_http2: not counting file buckets again stream max buffer limits. 
     Effectively transfering static files in one step from slave to master 
     connection. [Stefan Eissing]



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1782975 13f79535-47bb-0310-9956-ffa450edef68
2017-02-14 15:26:59 +00:00
Stefan Eissing
7c8a148333 On the trunk:
mod_http2: aplogno tags, more unified log formatting



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1782958 13f79535-47bb-0310-9956-ffa450edef68
2017-02-14 12:54:22 +00:00
Stefan Eissing
ba655809af On the trunk:
mod_http2: rework of stream states and cleanup handling.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1782875 13f79535-47bb-0310-9956-ffa450edef68
2017-02-13 21:00:30 +00:00
Stefan Eissing
832cbdb76a On the trunk:
mod_http2: fix for crash when running out of memory. Initial patch by Robert Swiecki <robert@swiecki.net>
CVEID: CVE-2017-7659


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1781304 13f79535-47bb-0310-9956-ffa450edef68
2017-02-01 20:40:38 +00:00
Stefan Eissing
b633809d19 On the trunk:
*) mod_http2: rework of stream resource cleanup to avoid a crash in a close
     of a lingering connection. Prohibit special file bucket beaming for
     shared buckets. Files sent in stream output now use the stream pool
     as read buffer, reducing memory footprint of connections.
     [Yann Ylavic, Stefan Eissing]



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1779738 13f79535-47bb-0310-9956-ffa450edef68
2017-01-21 15:07:42 +00:00
Stefan Eissing
728b6cde48 On the trunk:
*) mod_http2: streaming of request output now reacts timely to data
     from other streams becoming available. Same for new incoming requests.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1777907 13f79535-47bb-0310-9956-ffa450edef68
2017-01-08 20:11:27 +00:00
Stefan Eissing
216cef6001 On the trunk:
*) mod_http2: fix for possible page fault when stream is resumed during 
     session shutdown. [sidney-j-r-m (github)]
     
  *) mod_http2: fix for h2 session ignoring new responses while already
     open streams continue to have data available. [Stefan Eissing]
     



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1777160 13f79535-47bb-0310-9956-ffa450edef68
2017-01-03 16:42:45 +00:00
Stefan Eissing
85900b7fd8 On the trunk:
mod_http2: adding support for MergeTrailers directive. 
 
mod_http2: limiting DATA frame sizes by TLS record sizes in use on the     
     connection. Flushing outgoing frames earlier. 



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1776735 13f79535-47bb-0310-9956-ffa450edef68
2016-12-31 13:11:59 +00:00
Stefan Eissing
a1d69148c2 On the trunk:
Fix mod_h2/github issue #126: correct lifetime of data sent on temp pools

* modules/http2/h2_bucket_beam.c 
  - ignore send pools that are sub-pools of the existing one
  - added h2_beam_send_from() to allow explicit registering of the
    correct pool for the sending

* modules/http2/h2_bucket_beam.h
  - add prototype for h2_beam_send_from()

* modules/http2/h2_mplx.c
  - adding logging of output beam state

* modules/http2/h2_stream.c
  - register stream pool for sending data on input beam

* modules/http2/h2_task.c
  - register task pool on output beam on creation
  - adding trace logging
 
* modules/http2/h2_proxy_session.c
  - fixing a type in a comment while we're at it



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1775813 13f79535-47bb-0310-9956-ffa450edef68
2016-12-23 11:34:32 +00:00
Stefan Eissing
c671673db9 SECURITY: CVE-2016-8740
mod_http2: properly crafted, endless HTTP/2 CONTINUATION frames could be used to exhaust all server's memory.

Reported by: Naveen Tiwari <naveen.tiwari@asu.edu> and CDF/SEFCOM at Arizona State University



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1772576 13f79535-47bb-0310-9956-ffa450edef68
2016-12-04 22:06:30 +00:00
Stefan Eissing
9ed8c34e74 mod_http2: wseaking cleanup assertion on streams that have never been scheduled
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1771160 13f79535-47bb-0310-9956-ffa450edef68
2016-11-24 14:53:12 +00:00
Stefan Eissing
29acf46076 mod_http2: fix for beam double cleanup crashes introduced in 1.7.7
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1767803 13f79535-47bb-0310-9956-ffa450edef68
2016-11-02 23:50:42 +00:00
Stefan Eissing
a7719a1eed mod_http2: AP_DEBUG_ASSERT changed to ap_assert
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1766691 13f79535-47bb-0310-9956-ffa450edef68
2016-10-26 15:14:11 +00:00
Stefan Eissing
8be49a74d6 mod_http2: fixed potential crash in beam memory handling introduced in 1.7.x changes
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1766308 13f79535-47bb-0310-9956-ffa450edef68
2016-10-23 18:16:42 +00:00
Yann Ylavic
d80e4f701b Fix -Wunused-but-set-variable warnings.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1766129 13f79535-47bb-0310-9956-ffa450edef68
2016-10-21 21:05:39 +00:00
Stefan Eissing
fc770710e1 mod_http2/mod_proxy_http2: proper 100-continue handling up to backend, more robustness on connection reuse with PING frames
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1765318 13f79535-47bb-0310-9956-ffa450edef68
2016-10-17 15:52:01 +00:00
Stefan Eissing
0da36a75f8 mod_http2: reverting int->apr_uint32_t changes of v1.7.x
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1764005 13f79535-47bb-0310-9956-ffa450edef68
2016-10-09 20:22:40 +00:00
Stefan Eissing
2d12cf2d7a various fixes, mod_cgid interop, response/trailer forwarding rewritten, stability
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1763158 13f79535-47bb-0310-9956-ffa450edef68
2016-10-03 11:47:45 +00:00
Stefan Eissing
9b087848c1 more apr_uint32_t usage where appropriate, signed/unsigned warning detox, stream reset clears buffers immediately
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1761548 13f79535-47bb-0310-9956-ffa450edef68
2016-09-20 10:12:22 +00:00
Stefan Eissing
e2a74327fd mod_http2: rest of the fix for output blockage
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1761477 13f79535-47bb-0310-9956-ffa450edef68
2016-09-19 16:21:42 +00:00
Stefan Eissing
08df710604 mod_http2: more const goodiness and checks on h2 request creation, less NULL checking while processing
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1759547 13f79535-47bb-0310-9956-ffa450edef68
2016-09-07 06:44:16 +00:00
Stefan Eissing
2e6fa9fedc mod_http2: fix for stream buffer handling during shutdown
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1757985 13f79535-47bb-0310-9956-ffa450edef68
2016-08-27 10:39:24 +00:00
Stefan Eissing
4d2d1017d7 mod_http2: latest h2/state debug draft, fixes in 100-continue response generation
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1757534 13f79535-47bb-0310-9956-ffa450edef68
2016-08-24 14:44:53 +00:00
Stefan Eissing
8b0d436788 mod_http2: support for intermediate responses
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1755323 13f79535-47bb-0310-9956-ffa450edef68
2016-08-05 13:48:16 +00:00
Stefan Eissing
d6cd77eb95 mod_http2: complete implemenmtation of draft-http2-debug-state
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1754534 13f79535-47bb-0310-9956-ffa450edef68
2016-07-29 15:12:38 +00:00
Stefan Eissing
bd9fcdb968 mod_http2: fixing config lookup now that we have dir conf
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1753541 13f79535-47bb-0310-9956-ffa450edef68
2016-07-20 15:57:51 +00:00
Stefan Eissing
19b19a5a96 mod_http2: more orderly destruction of stream/task pairs
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1747531 13f79535-47bb-0310-9956-ffa450edef68
2016-06-09 10:28:51 +00:00