Another problem with the HTTP style of encoding can be seen if you try
writing an event based server. Because you can't tell if you've finished
reading a request until you've hit the newline. Because the request can
span multiple reads, you need to keep track of a lot of parser state in a
way that lets you continue when more data arrives.
The backwards compatibility mode for HTTP-NG currently starts off each
conection with a short header that will trigger method unknown from old servers.
If this were changed to be the HTTP/1.0 version of the first request (if such
a translation is possible, the level of backwards compatibility would be
identical.
The advantage of using a fixed header is that it avoids having to try and parse
a variable length header. The disadvantage is that the need to retry the
connection the first time that a particular host is encountered (after that,
the protocol of that host is cached)
It's even possible to use HTTP 1.0 syntax within SCP packetisation to get
some of the performance win - however, this approach doesn't address issues
like negotiation and charging, and still leaves you with all the headaches of
parsing the ad-hoced syntax.
Simon