tcoopman

tcoopman

I’m getting an %Mint.TransportError{reason: :econnrefused} for a request like this:

➜ curl -v http://localhost:8888
* processing: http://localhost:8888
*   Trying [::1]:8888...
* Connected to localhost (::1) port 8888
> GET / HTTP/1.1
> Host: localhost:8888
> User-Agent: curl/8.2.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Host: localhost:8888
< Date: Mon, 11 Sep 2023 10:24:31 GMT
< Connection: close
< X-Powered-By: PHP/8.2.9
< Content-Type: application/json
<
* Closing connection
{"status":"OK"}

But a similar request like this one works ok:

➜ curl -v http://localhost:5000
* processing: http://localhost:5000
*   Trying [::1]:5000...
* Connected to localhost (::1) port 5000
> GET / HTTP/1.1
> Host: localhost:5000
> User-Agent: curl/8.2.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Type: application/json; charset=utf-8
< Content-Length: 15
< ETag: W/"f-v/Y1JusChTxrQUzPtNAKycooOTA"
< Date: Mon, 11 Sep 2023 10:24:28 GMT
< Connection: keep-alive
< Keep-Alive: timeout=5
<
* Connection #0 to host localhost left intact
{"status":"OK"}

The second example is a standard Express server and the first one php. In the browser, curl, wget both requests work perfectly ok. Only Mint (and thus tools using Mint, like Req and Finch) gives me an error.

I can see that the responses are not exactly the same, but I don’t see why it should fail (content-length is nto a required header, and I’ve tried with setting the charset as well, but it doesn’t change the results)

Showing Posts 1 to 9

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

Hi @tcoopman if you’re getting :econnrefused then mint is saying it can’t establish a connection at all, not that it can’t make sense of the response. Can you show your mint code?

tcoopman

tcoopman OP

I’ve tried with both the Req and Mint example from: GitHub - wojtekmach/mix_install_examples: A collection of simple Elixir scripts that are using Mix.install/2. · GitHub
So I’m pretty sure it’s not about the code.

Also, tunneling the same request through ngrok makes it work.

dimitarvp

dimitarvp

Local proxy settings, maybe?

tcoopman

tcoopman OP

I don’t think so either. All ports work for the typescript server, none for the php server.

dimitarvp

dimitarvp

Well I would take out the huge hammer i.e. download Mint locally and specify that path in my mix.exs and then pepper that locally downloaded Mint with dbg. :person_shrugging:

Though it’s likely something else – maybe a security policy or some such – and it might turn out to be the wrong problem to focus on but still, you have to start somewhere.

tcoopman

tcoopman OP

yeah, no time to investigate currently :frowning: Might do that later though and see what’s going on…

tcoopman

tcoopman OP

I did find some time, and it’s an error coming from :gen_tcp.connect with these parameters:

[
  address: 'localhost',
  port: 5000,
  opts: [packet: :raw, mode: :binary, active: false],
  timeout: 30000
]

So I’m stuck…

(hint for debugging something locally, use Mix.install like this: Mix.install([{:mint, path: "."}]))

tcoopman

tcoopman OP

Ok, found the culprit.
Running php -S localhost:8000 results in the error, but php -S 127.0.0.1:8000 works.
I’m still confused why it’s only gen_tcp that struggles with the connection and no other tools.

hauleth

hauleth

curl tries to connect via both IPv4 and IPv6 while Mint probably tries only one of these (IPv4) when not asked to use IPv6 explicitly.

— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
jaybe78
Hello, I’m developing a online persistent chat system (what’s app) like using elixir/dynamodb/aws for a mobile app(flutter). The diffic...
New
Trolleger
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New

Other Trending Topics Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge &amp; Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews