Erlang v. 23.0 and HTTPoison error

Dear all,

After upgrading Erlang to version 23.0, a previously working project stopped working and I am getting the following error when the HTTPoison is called:

** (MatchError) no match of right hand side value: {:error, %HTTPoison.Error{id: nil, reason: {:options, {:sslv3, {:versions, [:“tlsv1.2”, :“tlsv1.1”, :tlsv1, :sslv3]}}}}}

Does anyone else get a similar behaviour? Any hints for a solution?

Thanks in advance for your help!

4 Likes

First guess: tlsv1.3 was added and sslv3 was removed in OTP 23 according to the release notes.

3 Likes

Downgrade to OTP 22.x or get Hackney from master. See https://github.com/benoitc/hackney/pull/619

5 Likes

Thank you for the hint!

I would like to elaborate a bit more here to assist others facing a similar problem.

I have changed mix.exs by adding in deps:
{:hackney, github: “benoitc/hackney”, override: true}

Moreover, I have modified the usage of HTTPoison to set the options, e.g.:

options = [ssl: [{:versions, [:“tlsv1.2”]}]]

{:ok, %HTTPoison.Response{body: body, headers: _headers}} =
HTTPoison.get(, [], options)

(UPDATE)
It seems that the change in the mix.exs file is not necessary.

8 Likes

I am calling a bunch of external APIs at different places in my phoenix app. Will I have to do this change everywhere or is there a possibility of new httpoison release in the near future ?

I do not know anything about future versions of HTTPoison. If you can tolerate waiting, then it might work.

Ah thanks for this!

Now that hackney 1.16.0 is released, we can get the fix into projects with:

$ mix deps.update hackney

In my project this gives me:

Upgraded:                                                                                                                                                     
  certifi 2.5.1 => 2.5.2                                                                                                                                      
  hackney 1.15.2 => 1.16.0                                                                                                                                    
  idna 6.0.0 => 6.0.1                                                                                                                                         
  ssl_verify_fun 1.1.5 => 1.1.6                                                                                                                               
  unicode_util_compat 0.4.1 => 0.5.0 (minor)                                                                                                                  
* Updating hackney (Hex package)                                                                                                                              
* Updating certifi (Hex package)                                                                                                                              
* Updating idna (Hex package)                                                                                                                                 
* Updating ssl_verify_fun (Hex package)                                                                                                                       
* Updating unicode_util_compat (Hex package)

And TLS HTTP requests are once again working. Thanks!

17 Likes