HTTP/2 for Apache httpd

HTTP/2 in httpd 2.4.20

Copyright (C) 2016 greenbytes GmbH

Some days before Easter, I reported on the new things in the upcoming 2.4.19 release of Apache httpd. Well, I broke the Windows build in that release and it was scrapped. That is the Apache httpd release process: if you break it, you own both parts!

So, Jim who is the hero doing almost all release management decided to wait until after Easter to tag the next release candidate. Which is supposed to happen today! Hopefully, this time everything works and we can ship a 2.4.20 by the end of the week after the usual testing and voting.

In the meantime, I have not been idle and sneaked in some fixes and a little new stuff that might interest you:

  1. Data is passed more efficiently from the request processing down the main connection. mod_http2 needs to know the frame size of DATA frames before it acutally sends it. Up until now, it first asked the lock protected code that is responsible for data shuffling back and forth how much is available. On transfer it entered the lock again to get the data. With 2.4.20, this is done in one go. Slight performance increase in certain situation.
  2. Slave connections (think of them as kind of, pseudo, internal HTTP/1.1 connections) used to be setup and destroyed for each HTTP/2 request. Now, a set of them is kept for future reuse, saving some effort.
  3. A bug in 2.4.19 was fixed that prevented scoreboard (server-status) updates from happening.
  4. New logging niceties were added, see more below.

Logging HTTP/2

I admit that logging has not been high on my priority list. Probably because I myself do not run statistics on the few servers that I maintain. But a lot of you do and rightly so! So without further ado, here is what possiblities you will have in 2.4.20:

And since these are all env variables in httpd you can make use of them in your CGI/PHP/Python or whatever web application.

Hope you enjoy it.

M√ľnster, 04.04.2016,

Stefan Eissing, greenbytes GmbH

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. See LICENSE for details.