Comments (7)
@azr Looks like d3d7d67 fixed your POC. Now when Close()
is called, gw == nil
which causes it to immediately return.
If you write anything inside of CatchPanic
it won't be gzip'd but that's expected since its wrapping withGz
. So this can be closed.
from gziphandler.
Ouch! That's a nasty bug. Thank you very much for reporting it, and especially for including a POC. The solution isn't immediately obvious to me, but so long as we call Reset before attempting to re-use the gzip writers (which we do), I see no harm in simply not calling Close when a panic occurs. Perhaps we should (partially) revert #8?
from gziphandler.
Sorry I was totally wrong for you :)
from gziphandler.
Whoops I actually found a way to reproduce: https://play.golang.org/p/zDqhbl4Nnn
log outputs : 2016/08/22 17:24:16 http: multiple response.WriteHeader calls
$ curl -H "Accept-Encoding: gzip" -i localhost:8000
HTTP/1.1 200 OK
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Mon, 22 Aug 2016 15:24:18 GMT
Content-Length: 23
Content-Type: application/x-gzip
� n����%
from gziphandler.
You could also just call Reset explicitly instead of Close (as a
precaution).
On Mon, Aug 22, 2016 at 8:46 AM Adam Mckaig [email protected]
wrote:
Ouch! That's a nasty bug. Thank you very much for reporting it, and
especially for including a POC. The solution isn't immediately obvious to
me, but so long as we call Reset before attempting to re-use the gzip
writers (which we do), I see no harm in simply not calling Close when a
panic occurs. Perhaps we should (partially) revert #8
#8?—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#15 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABIcLfhMi0aryIkpJ0M0fZPHXhWvisGks5qicRQgaJpZM4Jp5xq
.
from gziphandler.
We already call Reset immediately after grabbing a gzw from the pool, so I think omitting the Close should be okay.
from gziphandler.
Hey, you're welcome :)
from gziphandler.
Related Issues (20)
- Static files from ServeFile HOT 2
- Incorrect check for short write
- $maccon
- State of the package? HOT 1
- If not handleContenttype it buffers entire content
- make acceptsGzip public HOT 4
- Whitelist by mime type HOT 7
- Handling HEAD requests
- Do not set Content-Length on OPTIONS requests
- The NYTimes GitHub org will be renamed to nytimes HOT 4
- go mod depends on 1.12 HOT 11
- Range-Requests aren't properly handled
- Should Content-Length be set on gzipped responses? HOT 1
- Align Go package casing with VCS URL casing HOT 1
- Accept func(w http.ResponseWriter, r *http.Request) literals
- How to force flushing from the wrapped handler? HOT 4
- Show the error of gw.Close()
- Vary: Accept-encoding header is duplicated if inner handler sets it HOT 2
- Swappable gzip implementation? HOT 7
- "identity" Content-Encoding should also be compressed HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gziphandler.