diff --git a/CHANGES b/CHANGES index a998afb42ea56da764726515c1a7715c0cc4fd7d..da9f357c7e2aa549916865ef23741f8e65c624a6 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,13 @@ +Daniel (27 October 2005) +- Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described + in the man page, curl would send an invalid HTTP Range: header. The correct + way would be to use "-r [number]-" or even "-r -[number]". Starting now, + curl will warn if this is discovered, and automatically append a dash to the + range before passing it to libcurl. + Daniel (25 October 2005) - Amol Pattekar reported a bug with great detail and a fine example in bug #1326306 (http://curl.haxx.se/bug/view.cgi?id=1326306). When using the multi diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 93426d63044f09d31b137e381c10b379f5cd7f10..e8481175840eb7ae74152a9f655d5f647c4c8e53 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -15,6 +15,7 @@ This release includes the following changes: This release includes the following bugfixes: + o -r [num] would produce an invalid HTTP Range: header o multi interface with multi IP hosts could leak socket descriptors o the GnuTLS code didn't handle rehandshakes o re-use of a dead FTP connection @@ -32,6 +33,7 @@ Other curl-related news since the previous public release: This release would not have looked like this without help, code, reports and advice from friends like these: - Dave Dribin, Bradford Bruce, Temprimus + Dave Dribin, Bradford Bruce, Temprimus, Ofer, Dima Barsky, Amol Pattekar, Jaz + Fresh Thanks! (and sorry if I forgot to mention someone) diff --git a/docs/curl.1 b/docs/curl.1 index 69d890a6ea241dc8c2595a0238d4d01ba5385710..8a422b9e2abd35053c11af372cd5789d2e73ae5c 100644 --- a/docs/curl.1 +++ b/docs/curl.1 @@ -770,7 +770,7 @@ specifies the second 500 bytes .B -500 specifies the last 500 bytes .TP -.B 9500 +.B 9500- specifies the bytes from offset 9500 and forward .TP .B 0-0,-1 diff --git a/src/main.c b/src/main.c index 818b5baab3af03cad639aeaf725d796458dc3eaa..cd42b0d0605bafaaf8f7abbd193b48c3ee0c155f 100644 --- a/src/main.c +++ b/src/main.c @@ -2097,8 +2097,24 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */ return err; break; case 'r': - /* byte range requested */ - GetStr(&config->range, nextarg); + /* Specifying a range WITHOUT A DASH will create an illegal HTTP range + (and won't actually be range by definition). The man page previously + claimed that to be a good way, why this code is added to work-around + it. */ + if(!strchr(nextarg, '-')) { + char buffer[32]; + curl_off_t off; + warnf(config, + "A specfied range MUST include at least one dash (-). " + "Appending one for you!\n"); + off = curlx_strtoofft(nextarg, NULL, 10); + snprintf(buffer, sizeof(buffer), CURL_FORMAT_OFF_T "-", off); + GetStr(&config->range, buffer); + } + else + /* byte range requested */ + GetStr(&config->range, nextarg); + break; case 'R': /* use remote file's time */