From mboxrd@z Thu Jan 1 00:00:00 1970 Delivered-To: chneukirchen@gmail.com Received: by 10.142.191.1 with SMTP id o1cs26528wff; Sat, 5 Dec 2009 16:50:30 -0800 (PST) Received: from mr.google.com ([10.220.89.22]) by 10.220.89.22 with SMTP id c22mr3176025vcm.33.1260060629136 (num_hops = 1); Sat, 05 Dec 2009 16:50:29 -0800 (PST) Received: by 10.220.89.22 with SMTP id c22mr275479vcm.33.1260060627606; Sat, 05 Dec 2009 16:50:27 -0800 (PST) X-BeenThere: rack-devel@googlegroups.com Received: by 10.220.48.229 with SMTP id s37ls667989vcf.0.p; Sat, 05 Dec 2009 16:50:26 -0800 (PST) Received: by 10.220.65.71 with SMTP id h7mr1094628vci.2.1260060626442; Sat, 05 Dec 2009 16:50:26 -0800 (PST) Received: by 10.220.65.71 with SMTP id h7mr1094627vci.2.1260060626424; Sat, 05 Dec 2009 16:50:26 -0800 (PST) Return-Path: Received: from mail-qy0-f171.google.com (mail-qy0-f171.google.com [209.85.221.171]) by gmr-mx.google.com with ESMTP id 19si426797vws.14.2009.12.05.16.50.25; Sat, 05 Dec 2009 16:50:25 -0800 (PST) Received-SPF: pass (google.com: domain of rtomayko@gmail.com designates 209.85.221.171 as permitted sender) client-ip=209.85.221.171; Received: by qyk1 with SMTP id 1so1528645qyk.0 for ; Sat, 05 Dec 2009 16:50:25 -0800 (PST) MIME-Version: 1.0 Sender: rtomayko@gmail.com Received: by 10.224.114.194 with SMTP id f2mr2690948qaq.68.1260060625007; Sat, 05 Dec 2009 16:50:25 -0800 (PST) In-Reply-To: <200912060140.13051.ibc@aliax.net> References: <200912060140.13051.ibc@aliax.net> Date: Sat, 5 Dec 2009 16:50:24 -0800 Message-ID: Subject: Re: Why Thin handler uses "Chunked" Trasfer-Encoding? From: Ryan Tomayko To: rack-devel@googlegroups.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of rtomayko@gmail.com designates 209.85.221.171 as permitted sender) smtp.mail=rtomayko@gmail.com; dkim=pass (test mode) header.i=@gmail.com Reply-To: rack-devel@googlegroups.com Precedence: list Mailing-list: list rack-devel@googlegroups.com; contact rack-devel+owners@googlegroups.com List-ID: List-Post: , List-Help: , List-Archive: X-Thread-Url: http://groups.google.com/group/rack-devel/t/84ddfaed60efd056 X-Message-Url: http://groups.google.com/group/rack-devel/msg/89ea507cd1ef5595 List-Unsubscribe: , List-Subscribe: , Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Sat, Dec 5, 2009 at 4:40 PM, I=C3=B1aki Baz Castillo wro= te: > Hi, Thin adapter looks like: > > ------------------------------------- > require "thin" > require "rack/content_length" > require "rack/chunked" > > module Rack > =C2=A0module Handler > =C2=A0 =C2=A0class Thin > =C2=A0 =C2=A0 =C2=A0def self.run(app, options=3D{}) > =C2=A0 =C2=A0 =C2=A0 =C2=A0app =3D Rack::Chunked.new(Rack::ContentLength.= new(app)) > =C2=A0 =C2=A0 =C2=A0 =C2=A0server =3D ::Thin::Server.new(options[:Host] |= | '0.0.0.0', > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0options[:Port] || 8080, > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0app) > =C2=A0 =C2=A0 =C2=A0 =C2=A0yield server if block_given? > =C2=A0 =C2=A0 =C2=A0 =C2=A0server.start > =C2=A0 =C2=A0 =C2=A0end > =C2=A0 =C2=A0end > =C2=A0end > end > ----------------------------- > > Why to force "Chunked"? That only applies chunked encoding if no Content-Length response header exists at that point in the middleware chain. I believe all Rack adapters that don't support chunked encoding internally follow the same pattern. More here: http://github.com/rack/rack/blob/master/lib/rack/chunked.rb#L18-26 Thanks, Ryan --=20 # tomayko.com/about