httpotion
httpotion copied to clipboard
Crash on 304
When receiving a 304, the library tries to request the URL of the Location header
https://github.com/myfreeweb/httpotion/blob/9172d089cd1d47cdd772d97db750882cc741055f/lib/httpotion.ex#L200-L202 https://github.com/myfreeweb/httpotion/blob/9172d089cd1d47cdd772d97db750882cc741055f/lib/httpotion.ex#L243-L247
As the Location header is not set on a HTTP 304, normalize_location
crashes with the following stacktrace:
FunctionClauseError: no function clause matching in URI.parse/1
URI.parse/1 (elixir) arguments
--
0 | "nil"
File lib/uri.ex line 539 in URI.merge/2 (elixir)
File lib/httpotion.ex line 453 in HTTPotion.normalize_location/2 (httpotion)
File lib/httpotion.ex line 453 in HTTPotion.request/3 (httpotion)
To get some context, if needed, I'm using HTTPotion in a proxy, https://github.com/applidium/pericles/blob/master/proxy/lib/pericles_proxy/runner.ex
As a quick fix I created this fork https://github.com/Hugo-Hache/httpotion/commit/8cf2becddd5815ebc60380187c634f38a4a30f3e I'll be happy to create a pull request from it if it looks ok for you.
Good catch. I'm not sure how 304 got there. I think we should not crash even on a 302 with no Location, I'll add handling for that