curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

RE: How to authenticate when using “CURLOPT_CONNECT_ONLY” so I can use non-blocking curl_easy_send() and curl_easy_recv()

From: Venkat Maddisetti via curl-library <curl-library_at_cool.haxx.se>
Date: Mon, 19 Jul 2021 23:15:52 +0000

Sorry for any confusion, as I mentioned originally, http post works for me as laid out in the example and authentication is not a problem there. Since the response is a stream of data and curl_easy_perform() never returns and the thread is blocked. So I tried using CURLOPT_CONNECT_ONLY where I have a non-blocking send/recv and figured out sending CURLOPT_USERPWD or CURLOPT_USERNAME & CURLOPT_PASSWORD along with CURLOPT_CONNECT_ONLY goes unused as it was not complaining even when I send wrong username/password. Then I tried sending authentication and content-type as part of the http post header along with data using curl_easy_send() but still I guess it is not able to authenticate (as it does not complain about wrong password used) and I do not have response or any errors reported back.

Here is the string I am sending with curl_easy_send(),
"POST /emp/ HTTP/1.1\r\nAuthorization: Basic YWRtaW46cGFzcw==\r\nContent-Type: application/json\r\n%s"

In reference with string used in sendrecv.c example:
const char *request = "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n";

the difference is: GET vs POST and Authentication & Content-Type in my header, which I hope I am doing it right but highly doubtful and need some guidance.



-----Original Message-----
From: Daniel Stenberg [mailto:daniel_at_haxx.se]
Sent: Monday, July 19, 2021 5:26 PM
To: Venkat Maddisetti via curl-library <curl-library_at_cool.haxx.se>
Cc: Venkat Maddisetti <vmaddisetti_at_sharedspectrum.com>
Subject: RE: How to authenticate when using “CURLOPT_CONNECT_ONLY” so I can use non-blocking curl_easy_send() and curl_easy_recv()

On Mon, 19 Jul 2021, Venkat Maddisetti via curl-library wrote:

> Before coming here I realized curl_easy_setopt has no effect setting
> username and password

CURLOPT_USERPWD, CURLOPT_USERNAME and CURLOPT_PASSWORD included ?

> "POST /emp/ HTTP/1.1

If you want HTTP, then using CONNECT_ONLY + send/recv is *extremely* rarely the right answer.

You seem to want a plain POST with Basic auth and libcurl does that pretty well and simply with the regular easy API.

First, get the http-post.c example
Then set CURLOPT_USERNAME and CURLOPT_PASSWORD Then set the right Content-type and make sure the right request body is sent.

Doesn't that cover it?

-- 
  / daniel.haxx.se
  | Commercial curl support up to 24x7 is available!
  | Private help, bug fixes, support, ports, new features
  | https://www.wolfssl.com/contact/
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html
Received on 2021-07-20