diff --git a/project/src/net/curl/CURLBindings.cpp b/project/src/net/curl/CURLBindings.cpp index 9e4112cd2..0093fa079 100644 --- a/project/src/net/curl/CURLBindings.cpp +++ b/project/src/net/curl/CURLBindings.cpp @@ -11,6 +11,7 @@ namespace lime { std::map curlValid; std::map headerCallbacks; + std::map headerSLists; std::map progressCallbacks; std::map readCallbacks; std::map writeBytes; @@ -52,6 +53,14 @@ namespace lime { } + if (headerSLists.find (handle) != headerSLists.end ()) { + + curl_slist* chunk = headerSLists[handle]; + headerSLists.erase (handle); + curl_slist_free_all (chunk); + + } + if (progressCallbacks.find (handle) != progressCallbacks.end ()) { callback = progressCallbacks[handle]; @@ -732,6 +741,12 @@ namespace lime { case CURLOPT_HTTPHEADER: { + if (headerSLists.find (handle) != headerSLists.end ()) { + + curl_slist_free_all (headerSLists[handle]); + + } + struct curl_slist *chunk = NULL; int size = val_array_size (parameter); @@ -741,6 +756,8 @@ namespace lime { } + headerSLists[handle] = chunk; + code = curl_easy_setopt (curl, type, chunk); break; }