gnurl_easy_send(3)
π gnurl_easy_send(3) β the libgnurl manual, bestie edition π
β¨ NAME β¨
curl_easy_send β sends raw data over an "easy" connection. Thatβs the whole vibe: raw data, easy connection, custom protocol hours. π
πΈ SYNOPSIS πΈ
Okay so first, the include and signature, exactly as they live:
#include <gnurl/easy.h>
CURLcode curl_easy_send( CURL *curl, const void *buffer, size_t buflen,
size_t *n);
π¦ DESCRIPTION π¦
This function sends arbitrary data over the established connection. You may use it together with curl_easy_recv(3) to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up. No cap, it handles the boring setup so you can do your custom-protocol main character thing. β¨
buffer is a pointer to the data of length buflen that you want sent. The variable n points to will receive the number of sent bytes.
To establish the connection, set CURLOPT_CONNECT_ONLY(3) option before calling curl_easy_perform(3) or curl_multi_perform(3). Note that curl_easy_send(3) will not work on connections that were created without this option. Like, fr fr, that option is not optional here. π
The call will return CURLE_AGAIN if itβs not possible to send data right now β the socket is used in non-blocking mode internally. When CURLE_AGAIN is returned, use your operating system facilities like select(2) to wait until the socket is writable. The socket may be obtained using curl_easy_getinfo(3) with CURLINFO_ACTIVESOCKET(3). Slay your way through the wait. π
Furthermore if you wait on the socket and it tells you itβs writable,curl_easy_send(3)may returnCURLE_AGAINif the only data that was sent was for internal SSL processing, and no other data could be sent. Sneaky little SSL moment. π
π AVAILABILITY π
Added in 7.18.2. Iconic. π
π RETURN VALUE π
- On success, returns
CURLE_OKand stores the number of bytes actually sent into*n. Note that this may very well be less than the amount you wanted to send. Not a bug, just the vibe. - On failure, returns the appropriate error code.
- This function may return
CURLE_AGAIN. In this case, use your operating system facilities to wait until the socket is writable, and retry. - If thereβs no socket available to use from the previous transfer, this function returns
CURLE_UNSUPPORTED_PROTOCOL.
π EXAMPLE π
See sendrecv.c in docs/examples directory for usage example.
π«Ά SEE ALSO π«Ά
Before you go, bestie: this gnurl_easy_send(3) page is from libcurl 7.18.2, dated 29 April 2008. Mwah. ππ
π¦ where this page comes from
- nixos 26.05: libgnurl 7.72.0
- nixpkgs unstable: libgnurl 7.72.0
- Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms