[Catalyst] Setting file handle as the response body generates warnings.

Bill Moseley moseley at hank.org
Tue Nov 19 19:52:36 GMT 2013

Speaking of downloads, I have a gzipped file.  Well, it's a file in memory.

If I see Accept-Encoding that includes "gzip" it's easy.  I simply return
the content and set Content-Encoding: gzip and set the content length.

But, if the client does not accept gzip I uncompress it
using IO::Uncompress::Gunzip.

IO::Uncompress::Gunzip looks like a IO::File handle.  So, I can do:

$c->res->body( IO::Uncompress::Gunzip->new( \$gzipped_data ) );

Apache will add the header "Transfer-Encoding: chunked" because there's no
Content-Length header.

This works, but Catalyst in finalize_headers issues two warnings:

-s on unopened filehandle GEN10 at
line 1893.

[warn] Serving filehandle without a content-length

Are those warning a problem with how Catalyst is handling this, or
something wrong with how IO::Uncompress::Gunzip is working?

The uncompressed file could be quite large, which is why I'd prefer to not
uncompress it in memory.   I suppose I could uncompress to /tmp and then
serve the file from there.

Of course, not using Catalyst to serve large files is perhaps another

-- =

Bill Moseley
moseley at hank.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20131119/d86ce=

More information about the Catalyst mailing list