Re: [hybi] Web sockets and existing HTTP stacks

Roberto Peon <fenix@google.com> Tue, 02 February 2010 07:43 UTC

Return-Path: <fenix@google.com>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2603F3A6AC2 for <hybi@core3.amsl.com>; Mon, 1 Feb 2010 23:43:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.977
X-Spam-Level:
X-Spam-Status: No, score=-103.977 tagged_above=-999 required=5 tests=[AWL=-2.001, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oeMGD2kwjqkv for <hybi@core3.amsl.com>; Mon, 1 Feb 2010 23:43:17 -0800 (PST)
Received: from smtp-out.google.com (smtp-out.google.com [216.239.44.51]) by core3.amsl.com (Postfix) with ESMTP id 6F8843A6A5A for <hybi@ietf.org>; Mon, 1 Feb 2010 23:43:16 -0800 (PST)
Received: from kpbe11.cbf.corp.google.com (kpbe11.cbf.corp.google.com [172.25.105.75]) by smtp-out.google.com with ESMTP id o127hq9l004545 for <hybi@ietf.org>; Mon, 1 Feb 2010 23:43:52 -0800
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1265096633; bh=UlJ2bcfk3n3u0ZxPld7mwEbHaQI=; h=MIME-Version:In-Reply-To:References:Date:Message-ID:Subject:From: To:Cc:Content-Type; b=g51wAHHaFyhNpo4Aj7fOuIhPbdLbAUDOoNzXLOYbmcYbOoke2pvmPpkKcCWSvgm2+ 7dFGT/aHAXd6ncTntgQ4w==
DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=mime-version:in-reply-to:references:date:message-id:subject:from:to: cc:content-type:x-system-of-record; b=NrAwW0OZv22N9CRCw6AetywOR5E6rQeTJwD2jBkufW5TPcCcsptTJhxTOJ3JkmHTb /AfhNLEqQXhBTHBBrsV1Q==
Received: from pxi32 (pxi32.prod.google.com [10.243.27.32]) by kpbe11.cbf.corp.google.com with ESMTP id o127hppW030212 for <hybi@ietf.org>; Tue, 2 Feb 2010 01:43:51 -0600
Received: by pxi32 with SMTP id 32so4929209pxi.15 for <hybi@ietf.org>; Mon, 01 Feb 2010 23:43:51 -0800 (PST)
MIME-Version: 1.0
Received: by 10.143.26.6 with SMTP id d6mr277464wfj.223.1265096631154; Mon, 01 Feb 2010 23:43:51 -0800 (PST)
In-Reply-To: <1427E183-FDBC-4854-9455-B93AB28DAB03@apple.com>
References: <557ae280911171402v7546e5e7n93a1e57f87dc10e5@mail.gmail.com> <Pine.LNX.4.62.0912032347360.15540@hixie.dreamhostps.com> <4B2C1D52.9020505@webtide.com> <5c902b9e0912181640n497169cdrfa71f9a2908e6ef3@mail.gmail.com> <20091219005442.GA10949@shareable.org> <4B2C287E.1030006@webtide.com> <Pine.LNX.4.64.1001310835410.3846@ps20323.dreamhostps.com> <4B67A237.2040505@webtide.com> <ad99d8ce1002012139l3b8f525bj9caf7861332f3d18@mail.gmail.com> <1427E183-FDBC-4854-9455-B93AB28DAB03@apple.com>
Date: Mon, 01 Feb 2010 23:43:50 -0800
Message-ID: <ad99d8ce1002012343n132169f8wbaacc1cf4efe2f87@mail.gmail.com>
From: Roberto Peon <fenix@google.com>
To: Maciej Stachowiak <mjs@apple.com>
Content-Type: multipart/alternative; boundary="001636e0ad6f4e7ad8047e994349"
X-System-Of-Record: true
Cc: Greg Wilkins <gregw@webtide.com>, hybi@ietf.org
Subject: Re: [hybi] Web sockets and existing HTTP stacks
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 02 Feb 2010 07:43:18 -0000

Simple-- the proxy won't know that the response from the server is websocket
specific, and may reorder things.
You should not assume that the termination point (the "host") is a server.
It could be a reverse proxy. In such cases, the proxy needs to treat the
response as HTTP until it has been fully read and interpreted.

This response IS HTTP, so HTTP rules apply. It isn't a some random
more-restrictive subset of the response rules. It is still HTTP at that
point. That means that you don't get to add additional restrictions on that
request. If you do, then you're creating headaches for everyone.

Now, I may kick and scream, etc. but I certainly can be convinced that the
effort to change is worthwhile if the reasons are not arbitrary.
What advantage do we get from requiring special behaviors from the
servers/proxies in this case? I can't think of any benefits, thus my
response!

-=R

On Mon, Feb 1, 2010 at 10:11 PM, Maciej Stachowiak <mjs@apple.com> wrote:

>
> On Feb 1, 2010, at 9:39 PM, Roberto Peon wrote:
>
>
>
> On Mon, Feb 1, 2010 at 7:55 PM, Greg Wilkins <gregw@webtide.com> wrote:
>
>> Ian Hickson wrote:
>>
>> > Similarly, the server, when parsing
>> > the headers in "HTTP" mode, is unaffected by the order -- and indeed,
>> the
>> > Web Socket spec doesn't require _anything_ from the server in terms of
>> > parsing the client request. You can completely ignore it for all the
>> spec
>> > cares. All that matters is that you send back a specific handshake. But
>> if
>> > you're sending back the handshake, then you're a Web Socket server, so
>> why
>> > do we need to follow HTTP rules? We've already established the client is
>> a
>> > Web Socket client, so what on earth is the point of using HTTP rules?
>>
>> We need to follow HTTP rules because we are in a HTTP server
>> that has implemented the HTTP standard and until the CRLF
>> is sent after the 101 response, HTTP rules OK!
>>
>
> Ian-- I know that I'd kick scream and generally raise hell about putting
> that in our little proxy were it not HTTP compliant until the end of the 101
> response.
>
>
> The current handshake response *is* HTTP compliant, it's just that the HTTP
> response needs to meet some additional restrictions, or it will be rejected
> by the client. Those restrictions include requirements to include particular
> response headers (apparently not controversial), to include particular text
> in the status line (only mildly controversial), and to require that the
> first two response headers headers must be two specific ones, with an exact
> required order and capitalization (this appears to bug people the most and
> perhaps creates the most headaches inside existing server code bases).
>
> Are these restrictions a practical problem for you? If so, which are
> problematic, and can you describe the concrete issue? Knowing the intensity
> of your response is less useful than knowing the reason for it.
>
> Regards,
> Maciej
>
>