cURL / Mailing Lists / curl-library / Single Mail

curl-library

What am I doing wrong?

From: Pedro Medeiros <pzilla_at_yawl.com.br>
Date: Tue, 9 Oct 2001 10:50:39 +0000

I'm trying to reuse a curl connection, but the post forms I send get
corrupted on apache. Here is the code:

curltest.c:

----
#include <stdio.h>
#include <curl/curl.h>
int main(int argc, char argv[]) {
	struct HttpPost *first, *last;
	CURL *curl;
	CURLcode ccode;
	curl_global_init(CURL_GLOBAL_NOTHING);
	curl = curl_easy_init();
	if (!curl) { fprintf(stderr, "curl_easy_init error!\n"); exit(1); }
	curl_easy_setopt(curl, CURLOPT_URL, "localhost/test.php");
	curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1);
	first = (void*)0;
	last = (void*)0;
	curl_formadd(&first, &last, CURLFORM_COPYNAME, "abcdef",
		CURLFORM_COPYCONTENTS, "12345", CURLFORM_END);
	curl_formadd(&first, &last, CURLFORM_COPYNAME, "ghijkl",
		CURLFORM_COPYCONTENTS, "67890", CURLFORM_END);
	curl_easy_setopt(curl, CURLOPT_HTTPPOST, first);
	ccode = curl_easy_perform(curl);
	if (ccode) { fprintf(stderr, "curl_easy_perform error\n"); exit(1); }
	curl_formfree(first);
	curl_easy_setopt(curl, CURLOPT_URL, "localhost/test.php");
	curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1);
	curl_easy_setopt(curl, CURLOPT_HTTPPOST, first);
	first = (void*)0;
	last = (void*)0;
	curl_formadd(&first, &last, CURLFORM_COPYNAME, "abcdef",
		CURLFORM_COPYCONTENTS, "A", CURLFORM_END);
	curl_formadd(&first, &last, CURLFORM_COPYNAME, "ghijkl",
		CURLFORM_COPYCONTENTS, "0", CURLFORM_END);
	curl_easy_setopt(curl, CURLOPT_HTTPPOST, first);
	ccode = curl_easy_perform(curl);
	if (ccode) { fprintf(stderr, "curl_easy_perform error\n"); exit(1); }
	curl_easy_cleanup(curl);
	curl_global_cleanup();
}
----
and test.php:
----
<?
foreach ($HTTP_POST_VARS as $k => $v) {
	print "[$k] = [$v]\n";
}
?>
----
The output:
[abcdef] = [12345]
[ghijkl] = [67890]
[abcdef@] = [A	@       @%]
[ghijkl@] = [0	@	@]
Second request got corrupted. The same thing happened running Linux and FreeBSD.
Received on 2001-10-09