Sunday, July 10, 2022

[SOLVED] curl does not terminate after successful POST

Issue

I have created some curl command to send a POST to my server where I am listening on that port for input to trigger additional action. The command is the following (Just masked the URL):

curl -v -H "Content-Type: application/json" -X POST -d "{\"Location\":\"Some Name\",\"Value\":\"40%\"}" http://example.com:8885/

I get the following output from curl:

About to connect() to example.com port 8885 (#0)

Trying 5.147.XXX.XXX...

Connected to example.com (5.147.XXX.XXX) port 8885 (#0)

POST / HTTP/1.1

User-Agent: curl/7.29.0

Host: example.com:8885

Accept: /

Content-Type: application/json

Content-Length: 40

upload completely sent off: 40 out of 40 bytes

However after that curl does not close the connection. Am I doing something wrong? Also on the server I only receive the POST as soon as I hit ctrl+c.


Solution

It sits there waiting for the proper HTTP response, and after that has been received it will exit cleanly.

A minimal HTTP/1.1 response could look something like:

HTTP/1.1 200 OK
Content-Length: 0

... and it needs an extra CRLF after the last header to signal the end of headers.



Answered By - Daniel Stenberg
Answer Checked By - Willingham (WPSolving Volunteer)