Dear all,

I have a strange effect that I see in one of my projects where I am setting up 
header entries provided as a list derived from user settings.
I am using the code below that is supposed to delete old header entries, then 
collect the ones to be applied and finally applies the entries.
To my understanding, this should only include the headers that I add in this 
respective call.
Instead, what happens is that the previous ones remain active and the ones I 
append in further calls to that function are being added additionally.
I was following the example in: 
https://curl.se/libcurl/c/CURLOPT_HTTPHEADER.html

Am I missing something? Any help is greatly appreciated, maybe you spot 
something?

Here is the code in question.
Remark: "curl_hdr_data" is a copy kept from a previous call, "headers" is a 
vector of strings to add to the header (line-by-line basically).

  // Delete previously applied headers
  struct curl_slist* curl_hdr_list = static_cast<struct 
curl_slist*>(curl_hdr_data);
  if (nullptr!=curl_hdr_list)
  {
    curl_slist_free_all(curl_hdr_list); // Free any previous data from the list
    curl_hdr_list = nullptr;
  }

  // Assemble all headers provided
  for (size_t i=0; i<headers.GetCount(); i++)
  {
    std::string stl_header = headers.Item(i).ToStdString();
    curl_hdr_list = curl_slist_append( curl_hdr_list, stl_header.c_str() );
  }

  // Apply all headers provided
  CURLcode cc = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, curl_hdr_list);
  if (CURLE_OK!=cc)
  {
    return false;
  }

Best regards,
Morten.
-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to