static Qiniu_Error Qiniu_Io_call( Qiniu_Client* self, Qiniu_Io_PutRet* ret, struct curl_httppost* formpost) { Qiniu_Error err; CURL* curl = Qiniu_Client_reset(self); struct curl_slist* headers = curl_slist_append(NULL, "Expect:"); curl_easy_setopt(curl, CURLOPT_URL, QINIU_UP_HOST); curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); err = Qiniu_callex(curl, &self->b, &self->root, Qiniu_False, &self->respHeader); if (err.code == 200 && ret != NULL) { ret->hash = Qiniu_Json_GetString(self->root, "hash", NULL); ret->key = Qiniu_Json_GetString(self->root, "key", NULL); } curl_formfree(formpost); /* * Bug No.(4718) Wang Xiaotao 2013\10\17 17:46:07 * Change for : free variable 'headers' * Reason : memory leak! */ curl_slist_free_all(headers); return err; }
static CURL* Qiniu_Client_initcall(Qiniu_Client* self, const char* url) { CURL* curl = Qiniu_Client_reset(self); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); curl_easy_setopt(curl, CURLOPT_URL, url); return curl; }