X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fhttp.c;h=c82bbd2f39518fee4d6ae86a12aa119402e543b7;hp=690fcdecfd04ab65a58db2912661386f03b7b780;hb=351e438e5109856d8e97af19583e655aa2f1bb4c;hpb=5bb2f4316571673291565f5ccd559f9abc8bc931 diff --git a/src/http.c b/src/http.c index 690fcdec..c82bbd2f 100644 --- a/src/http.c +++ b/src/http.c @@ -1040,7 +1040,7 @@ modify_param_name(param_token *name) static void modify_param_value (param_token *value, int encoding_type ) { - if (RFC2231_ENCODING == encoding_type) + if (encoding_type == RFC2231_ENCODING) { const char *delim = memrchr (value->b, '\'', value->e - value->b); if ( delim != NULL ) @@ -1073,6 +1073,7 @@ extract_param (const char **source, param_token *name, param_token *value, char separator, bool *is_url_encoded) { const char *p = *source; + int param_type; if (is_url_encoded) *is_url_encoded = false; /* initializing the out parameter */ @@ -1130,10 +1131,10 @@ extract_param (const char **source, param_token *name, param_token *value, } *source = p; - int param_type = modify_param_name(name); - if (NOT_RFC2231 != param_type) + param_type = modify_param_name(name); + if (param_type != NOT_RFC2231) { - if (RFC2231_ENCODING == param_type && is_url_encoded) + if (param_type == RFC2231_ENCODING && is_url_encoded) *is_url_encoded = true; modify_param_value(value, param_type); } @@ -1585,7 +1586,7 @@ read_response_body (struct http_stat *hs, int sock, FILE *fp, wgint contlen, /* Download the response body and write it to fp. If we are working on a WARC file, we simultaneously write the response body to warc_tmp. */ - hs->res = fd_read_body (sock, fp, contlen != -1 ? contlen : 0, + hs->res = fd_read_body (hs->local_file, sock, fp, contlen != -1 ? contlen : 0, hs->restval, &hs->rd_size, &hs->len, &hs->dltime, flags, warc_tmp); if (hs->res >= 0) @@ -2595,6 +2596,7 @@ read_header: tmp = parse_charset (tmp2); if (tmp) set_content_encoding (iri, tmp); + xfree_null(tmp); } } } @@ -2617,6 +2619,22 @@ read_header: if (H_20X (statcode)) *dt |= RETROKF; + if (statcode == HTTP_STATUS_NO_CONTENT) + { + /* 204 response has no body (RFC 2616, 4.3) */ + + /* In case the caller cares to look... */ + hs->len = 0; + hs->res = 0; + hs->restval = 0; + + CLOSE_FINISH (sock); + xfree_null (type); + xfree (head); + + return RETRFINISHED; + } + /* Return if redirected. */ if (H_REDIRECTED (statcode) || statcode == HTTP_STATUS_MULTIPLE_CHOICES) { @@ -2944,11 +2962,8 @@ read_header: fp = output_stream; /* Print fetch message, if opt.verbose. */ - if (opt.verbose) - { - logprintf (LOG_NOTQUIET, _("Saving to: %s\n"), + logprintf (LOG_VERBOSE, _("Saving to: %s\n"), HYPHENP (hs->local_file) ? quote ("STDOUT") : quote (hs->local_file)); - } err = read_response_body (hs, sock, fp, contlen, contrange, @@ -3120,6 +3135,8 @@ Spider mode enabled. Check if remote file exists.\n")); /* Decide whether or not to restart. */ if (force_full_retrieve) hstat.restval = hstat.len; + else if (opt.start_pos >= 0) + hstat.restval = opt.start_pos; else if (opt.always_rest && got_name && stat (hstat.local_file, &st) == 0