Re: [hybi] deflate-stream and masking

Patrick McManus <> Wed, 20 July 2011 19:43 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id EB19121F8A62 for <>; Wed, 20 Jul 2011 12:43:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Pf8Qxj3pt-0q for <>; Wed, 20 Jul 2011 12:43:21 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 6683A21F8922 for <>; Wed, 20 Jul 2011 12:43:21 -0700 (PDT)
Received: by (Postfix, from userid 1000) id 8095510190; Wed, 20 Jul 2011 15:43:20 -0400 (EDT)
Received: from [] ( []) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPSA id 2E2B310154; Wed, 20 Jul 2011 15:43:16 -0400 (EDT)
From: Patrick McManus <>
To: David Endicott <>
In-Reply-To: <>
References: <> <> <> <> <00b801cc470a$d2d5e520$7881af60$> <>
Content-Type: text/plain; charset="UTF-8"
Date: Wed, 20 Jul 2011 15:43:13 -0400
Message-ID: <1311190993.1862.135.camel@ds9>
Mime-Version: 1.0
X-Mailer: Evolution 2.32.2
Content-Transfer-Encoding: 7bit
Cc: Hybi <>
Subject: Re: [hybi] deflate-stream and masking
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 20 Jul 2011 19:43:22 -0000

On Wed, 2011-07-20 at 14:55 -0400, David Endicott wrote:
> I'm basing my position on Greg's comment above that:
> > I've just noticed that the w3c is currently intending to make
> support
> > for deflate-stream mandatory!
> >

The bug references the editor's draft (i.e. a work in progress) of the
API, which I would hope could still be changed.

Specifically what it does is, as I read it, is mandate that clients
implementing the JS API (i.e. browsers) must request exactly one
extension in the handshake ("deflate-stream"). It does not require that
the server accept it (indeed it notes what happens to the js attributes
if the server does not - interoperation continues without compression)
so I don't think we can fairly say that it makes deflate-stream support
mandatory in anything other than browsers and then only actually use it
when servers acquiesce.

More concerning is that it effectively bans any other transport
extensions in browsers.

This obviously doesn't match the expected use of protocol extensions,
which is a much bigger space than just transport compression. Even if
the RFC contained a perfect deflate-frame which was specified by the
API, it still interacts poorly with mux or anything else that
implementations might want to do at the transport layer. I don't
understand why the JS API is even participating in such a direct way.
(specifying that compression applies to the messages which could be used
to make the decision on what extensions to negotiate would be a more
indirect and at least on the face of it sensible way to go).

There are no changes the IETF WG can make to the ietf-draft that can fix
this mismatch.

As for compression, the most productive thing to do seems to me to be to
define in a separate draft deflate-frame and push it through the
adoption/standardization process. No matter what is defined the
extensions mechanism should (and does!) provide a mechanism for
migration for any sensible protocol implementations.

While I don't want to go to the mat for deflate-stream it certainly has
a number of use cases where it does well - most downstream traffic of >
tiny-sized messages, and large upstream messages - so I'm not in the
camp of "just throw it out".