No9 / harmon

middleware for node-http-proxy to modify the remote website response with trumpet
Other
424 stars 62 forks source link

write() getting called before writeHead() on gzip'd content causes failures #49

Open kaysond opened 6 years ago

kaysond commented 6 years ago

It seems like harmon depends on the assumption that writeHead() gets called before write()

For whatever reason, there are situations where res.writeHead() doesn't get called until after one (or all!) res.write() calls.

So if the content is gzipped, then harmon doesn't set res.isGziped until after some of the data has already been written to the output, and either the gzip'd content gets sent to the output, or gzip fails because it gets only part of the data.

A possible solution would be to check content encoding on the first write() call, and store that.

leveneg commented 6 years ago

running into a similar issue, in which isHtml isn't getting set. It seems this change over at node-http-proxy has invalidated the assumption that writeHead always gets called first.

leveneg commented 6 years ago

opened #50 to address this issue