--- /dev/null
+--- busybox-1.18.3/networking/wget.c
++++ busybox-1.18.3-wget/networking/wget.c
+@@ -446,7 +446,7 @@ static FILE* prepare_ftp_session(FILE **
+
+ static void NOINLINE retrieve_file_data(FILE *dfp, int output_fd)
+ {
+- char buf[512];
++ char buf[4*1024]; /* made bigger to speed up local xfers */
+ #if ENABLE_FEATURE_WGET_STATUSBAR || ENABLE_FEATURE_WGET_TIMEOUT
+ # if ENABLE_FEATURE_WGET_TIMEOUT
+ unsigned second_cnt;
+@@ -506,8 +506,11 @@ static void NOINLINE retrieve_file_data(
+ 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)
+@@ -706,6 +709,11 @@ int wget_main(int argc UNUSED_PARAM, cha
+ 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,
+@@ -719,22 +727,25 @@ int wget_main(int argc UNUSED_PARAM, cha
+
+ 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);