Ref: https://lists.busybox.net/pipermail/busybox/2025-July/091599.html
Patch: >From bc23feef9326a43e20402dc49a3883affd9cf548 Mon Sep 17 00:00:00 2001 From: Ron Yorston <[email protected]> Date: Sat, 27 Jul 2024 05:50:12 +0100 Subject: [PATCH] wget: let user override Content-Length. Closes 16138 The wget applet allows several common headers to be overridden by the user. Add 'Content-Length' to the list. This is supported by GNU wget. function old new delta wget_main 3065 3087 +22 wget_user_headers 76 92 +16 .rodata 100275 100276 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 39/0) Total: 39 bytes Signed-off-by: Ron Yorston <[email protected]> --- networking/wget.c | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/networking/wget.c b/networking/wget.c index 512bebfc2..009202c8c 100644 --- a/networking/wget.c +++ b/networking/wget.c @@ -208,36 +208,40 @@ static const char P_FTPS[] ALIGN1 = "ftps"; #if ENABLE_FEATURE_WGET_LONG_OPTIONS /* User-specified headers prevent using our corresponding built-in headers. */ enum { - HDR_HOST = (1<<0), - HDR_USER_AGENT = (1<<1), - HDR_RANGE = (1<<2), - HDR_CONTENT_TYPE = (1<<3), - HDR_AUTH = (1<<4) * ENABLE_FEATURE_WGET_AUTHENTICATION, - HDR_PROXY_AUTH = (1<<5) * ENABLE_FEATURE_WGET_AUTHENTICATION, + HDR_HOST = (1<<0), + HDR_USER_AGENT = (1<<1), + HDR_RANGE = (1<<2), + HDR_CONTENT_TYPE = (1<<3), + HDR_CONTENT_LENGTH = (1<<4), + HDR_AUTH = (1<<5) * ENABLE_FEATURE_WGET_AUTHENTICATION, + HDR_PROXY_AUTH = (1<<6) * ENABLE_FEATURE_WGET_AUTHENTICATION, }; static const char wget_user_headers[] ALIGN1 = "Host:\0" "User-Agent:\0" "Range:\0" "Content-Type:\0" + "Content-Length:\0" # if ENABLE_FEATURE_WGET_AUTHENTICATION "Authorization:\0" "Proxy-Authorization:\0" # endif ; -# define USR_HEADER_HOST (G.user_headers & HDR_HOST) -# define USR_HEADER_USER_AGENT (G.user_headers & HDR_USER_AGENT) -# define USR_HEADER_RANGE (G.user_headers & HDR_RANGE) -# define USR_HEADER_CONTENT_TYPE (G.user_headers & HDR_CONTENT_TYPE) -# define USR_HEADER_AUTH (G.user_headers & HDR_AUTH) -# define USR_HEADER_PROXY_AUTH (G.user_headers & HDR_PROXY_AUTH) +# define USR_HEADER_HOST (G.user_headers & HDR_HOST) +# define USR_HEADER_USER_AGENT (G.user_headers & HDR_USER_AGENT) +# define USR_HEADER_RANGE (G.user_headers & HDR_RANGE) +# define USR_HEADER_CONTENT_TYPE (G.user_headers & HDR_CONTENT_TYPE) +# define USR_HEADER_CONTENT_LENGTH (G.user_headers & HDR_CONTENT_LENGTH) +# define USR_HEADER_AUTH (G.user_headers & HDR_AUTH) +# define USR_HEADER_PROXY_AUTH (G.user_headers & HDR_PROXY_AUTH) #else /* No long options, no user-headers :( */ -# define USR_HEADER_HOST 0 -# define USR_HEADER_USER_AGENT 0 -# define USR_HEADER_RANGE 0 -# define USR_HEADER_CONTENT_TYPE 0 -# define USR_HEADER_AUTH 0 -# define USR_HEADER_PROXY_AUTH 0 +# define USR_HEADER_HOST 0 +# define USR_HEADER_USER_AGENT 0 +# define USR_HEADER_RANGE 0 +# define USR_HEADER_CONTENT_TYPE 0 +# define USR_HEADER_CONTENT_LENGTH 0 +# define USR_HEADER_AUTH 0 +# define USR_HEADER_PROXY_AUTH 0 #endif /* Globals */ @@ -1271,11 +1275,14 @@ static void download_one_url(const char *url) "Content-Type: application/x-www-form-urlencoded\r\n" ); } + if (!USR_HEADER_CONTENT_LENGTH) + SENDFMT(sfp, "Content-Length: %u\r\n", + (int)strlen(G.post_data) + ); SENDFMT(sfp, - "Content-Length: %u\r\n" "\r\n" "%s", - (int) strlen(G.post_data), G.post_data + G.post_data ); } else #endif -- 2.45.2 _______________________________________________ busybox mailing list [email protected] https://lists.busybox.net/mailman/listinfo/busybox
