GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
CURLOPT_HSTSREADFUNCTION(3) FreeBSD Library Functions Manual CURLOPT_HSTSREADFUNCTION(3)

CURLOPT_HSTSREADFUNCTION - read callback for HSTS hosts

#include <curl/curl.h>
struct curl_hstsentry {

char *name;
size_t namelen;
unsigned int includeSubDomains:1;
char expire[18]; /* YYYYMMDD HH:MM:SS [null-terminated] */ }; CURLSTScode hstsread(CURL *easy, struct curl_hstsentry *sts, void *clientp); CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSREADFUNCTION, hstsread);

Pass a pointer to your callback function, as the prototype shows above.

This callback function gets called by libcurl repeatedly when it populates the in-memory HSTS cache.

Set the clientp argument with the CURLOPT_HSTSREADDATA(3) option or it is NULL.

When this callback is invoked, the sts pointer points to a populated struct: Copy the hostname to name (no longer than namelen bytes). Make it null-terminated. Set includeSubDomains to TRUE or FALSE. Set expire to a date stamp or a zero length string for forever (wrong date stamp format might cause the name to not get accepted)

The callback should return CURLSTS_OK if it returns a name and is prepared to be called again (for another host) or CURLSTS_DONE if it has no entry to return. It can also return CURLSTS_FAIL to signal error. Returning CURLSTS_FAIL stops the transfer from being performed and make CURLE_ABORTED_BY_CALLBACK get returned.

This option does not enable HSTS, you need to use CURLOPT_HSTS_CTRL(3) to do that.

NULL - no callback.

This functionality affects http only

struct priv {

void *custom; }; static CURLSTScode hsts_cb(CURL *easy, struct curl_hstsentry *sts,
void *clientp) {
/* populate the struct as documented */
return CURLSTS_OK; } int main(void) {
CURL *curl = curl_easy_init();
if(curl) {
struct priv my_stuff;
CURLcode res;
/* set HSTS read callback */
curl_easy_setopt(curl, CURLOPT_HSTSREADFUNCTION, hsts_cb);
/* pass in suitable argument to the callback */
curl_easy_setopt(curl, CURLOPT_HSTSREADDATA, &my_stuff);
res = curl_easy_perform(curl);
} }

Added in curl 7.74.0

This returns CURLE_OK.

CURLOPT_HSTS(3), CURLOPT_HSTSREADDATA(3), CURLOPT_HSTSWRITEFUNCTION(3), CURLOPT_HSTS_CTRL(3)

2025-07-03 libcurl

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.