[git commit master 1/1] wget: use closed HTTP/1.1 connection, stop when we dl'ed $content_len bytes
Denys Vlasenko
vda.linux at googlemail.com
Thu Feb 10 12:23:45 UTC 2011
commit: http://git.busybox.net/busybox/commit/?id=9213a55bf0cc833d024975865a96a762b7a90b62
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master
function old new delta
retrieve_file_data 353 367 +14
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
networking/wget.c | 27 +++++++++++++++++++--------
1 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/networking/wget.c b/networking/wget.c
index 74d9004..931882f 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -510,8 +510,11 @@ static void NOINLINE retrieve_file_data(FILE *dfp, int output_fd)
G.transferred += n;
progress_meter(PROGRESS_BUMP);
#endif
- if (G.got_clen)
+ if (G.got_clen) {
G.content_len -= n;
+ if (G.content_len == 0)
+ break;
+ }
}
if (!G.chunked)
@@ -709,6 +712,11 @@ int wget_main(int argc UNUSED_PARAM, char **argv)
fprintf(sfp, "Host: %s\r\nUser-Agent: %s\r\n",
target.host, user_agent);
+ /* Ask server to close the connection as soon as we are done
+ * (IOW: we do not intend to send more requests)
+ */
+ fprintf(sfp, "Connection: close\r\n");
+
#if ENABLE_FEATURE_WGET_AUTHENTICATION
if (target.user) {
fprintf(sfp, "Proxy-Authorization: Basic %s\r\n"+6,
@@ -722,22 +730,25 @@ int wget_main(int argc UNUSED_PARAM, char **argv)
if (G.beg_range)
fprintf(sfp, "Range: bytes=%"OFF_FMT"u-\r\n", G.beg_range);
+
#if ENABLE_FEATURE_WGET_LONG_OPTIONS
if (extra_headers)
fputs(extra_headers, sfp);
if (opt & WGET_OPT_POST_DATA) {
char *estr = URL_escape(post_data);
- fprintf(sfp, "Content-Type: application/x-www-form-urlencoded\r\n");
- fprintf(sfp, "Content-Length: %u\r\n" "\r\n" "%s",
- (int) strlen(estr), estr);
- /*fprintf(sfp, "Connection: Keep-Alive\r\n\r\n");*/
- /*fprintf(sfp, "%s\r\n", estr);*/
+ fprintf(sfp,
+ "Content-Type: application/x-www-form-urlencoded\r\n"
+ "Content-Length: %u\r\n"
+ "\r\n"
+ "%s",
+ (int) strlen(estr), estr
+ );
free(estr);
} else
#endif
- { /* If "Connection:" is needed, document why */
- fprintf(sfp, /* "Connection: close\r\n" */ "\r\n");
+ {
+ fprintf(sfp, "\r\n");
}
fflush(sfp);
--
1.7.3.4
More information about the busybox-cvs
mailing list