From a4773fcbbbf42a25c1037573fbab58aa275b9ed1 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 24 Aug 2005 10:57:28 +0000 Subject: Toby Peterson added CURLOPT_IGNORE_CONTENT_LENGTH to the library, accessible from the command line tool with --ignore-content-length. This will make it easier to download files from Apache 1.x (and similar) servers that are still having problems serving files larger than 2 or 4 GB. When this option is enabled, curl will simply have to wait for the server to close the connection to signal end of transfer. I wrote test case 269 that runs a simple test that this works. --- lib/transfer.c | 2 +- lib/url.c | 4 ++++ lib/urldata.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/transfer.c b/lib/transfer.c index 8f885f5d9..d08fa594d 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -718,7 +718,7 @@ CURLcode Curl_readwrite(struct connectdata *conn, the header completely if we get a 416 response as then we're resuming a document that we don't get, and this header contains info about the true size of the document we didn't get now. */ - if (!k->ignorecl && + if (!k->ignorecl && !data->set.ignorecl && checkprefix("Content-Length:", k->p)) { contentlength = curlx_strtoofft(k->p+15, NULL, 10); if (data->set.max_filesize && diff --git a/lib/url.c b/lib/url.c index f245a1986..92d81caa4 100644 --- a/lib/url.c +++ b/lib/url.c @@ -1443,6 +1443,10 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, data->set.ftp_account = va_arg(param, char *); break; + case CURLOPT_IGNORE_CONTENT_LENGTH: + data->set.ignorecl = va_arg(param, long)?TRUE:FALSE; + break; + default: /* unknown tag and its companion, just ignore: */ result = CURLE_FAILED_INIT; /* correct this */ diff --git a/lib/urldata.h b/lib/urldata.h index 4200c3818..3afc90a4c 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -1068,6 +1068,7 @@ struct UserDefined { bool global_dns_cache; /* subject for future removal */ bool tcp_nodelay; /* whether to enable TCP_NODELAY or not */ + bool ignorecl; /* ignore content length */ }; /* -- cgit v1.2.3