From owner-freebsd-bugs@FreeBSD.ORG Thu Dec 5 00:00:00 2013 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A9E52C98 for ; Thu, 5 Dec 2013 00:00:00 +0000 (UTC) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 85A6C1C7C for ; Thu, 5 Dec 2013 00:00:00 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id rB5000pu022499 for ; Thu, 5 Dec 2013 00:00:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id rB5000JB022498; Thu, 5 Dec 2013 00:00:00 GMT (envelope-from gnats) Resent-Date: Thu, 5 Dec 2013 00:00:00 GMT Resent-Message-Id: <201312050000.rB5000JB022498@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Jan Beich Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5BFC9AC5 for ; Wed, 4 Dec 2013 23:57:49 +0000 (UTC) Received: from oldred.freebsd.org (oldred.freebsd.org [8.8.178.121]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2E90B1B63 for ; Wed, 4 Dec 2013 23:57:44 +0000 (UTC) Received: from oldred.freebsd.org ([127.0.1.6]) by oldred.freebsd.org (8.14.5/8.14.7) with ESMTP id rB4Nvc6K003568 for ; Wed, 4 Dec 2013 23:57:38 GMT (envelope-from nobody@oldred.freebsd.org) Received: (from nobody@localhost) by oldred.freebsd.org (8.14.5/8.14.5/Submit) id rB4NvcpN003567; Wed, 4 Dec 2013 23:57:38 GMT (envelope-from nobody) Message-Id: <201312042357.rB4NvcpN003567@oldred.freebsd.org> Date: Wed, 4 Dec 2013 23:57:38 GMT From: Jan Beich To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: bin/184507: [patch] libfetch: allow hiding User-Agent with empty string X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Dec 2013 00:00:00 -0000 >Number: 184507 >Category: bin >Synopsis: [patch] libfetch: allow hiding User-Agent with empty string >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Dec 05 00:00:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Jan Beich >Release: >Organization: >Environment: >Description: In some situations it may be desirable to completely hide User-Agent field when fetching a file e.g., when using over Tor. >How-To-Repeat: $ sudo nc -kl 0 80 & # before $ HTTP_USER_AGENT= fetch http://0 GET / HTTP/1.1 Host: 0 Accept: */* User-Agent: fetch libfetch/2.0 Connection: close ^C # after $ HTTP_USER_AGENT= fetch http://0 GET / HTTP/1.1 Host: 0 Accept: */* Connection: close ^C # other download tools $ curl -A "" http://0 GET / HTTP/1.1 Host: 0 Accept: */* ^C $ wget -U "" http://0 2>/dev/null GET / HTTP/1.1 Accept: */* Host: 0 Connection: Keep-Alive ^C >Fix: --- noua.diff begins here --- Index: lib/libfetch/fetch.3 =================================================================== --- lib/libfetch/fetch.3 (revision 258921) +++ lib/libfetch/fetch.3 (working copy) @@ -627,6 +627,7 @@ the document URL will be used as referrer URL. Specifies the User-Agent string to use for HTTP requests. This can be useful when working with HTTP origin or proxy servers that differentiate between user agents. +If used with an empty string no User-Agent is sent. .It Ev NETRC Specifies a file to use instead of .Pa ~/.netrc Index: lib/libfetch/http.c =================================================================== --- lib/libfetch/http.c (revision 258921) +++ lib/libfetch/http.c (working copy) @@ -1679,9 +1679,10 @@ http_request(struct url *URL, const char *op, stru else http_cmd(conn, "Referer: %s", p); } - if ((p = getenv("HTTP_USER_AGENT")) != NULL && *p != '\0') - http_cmd(conn, "User-Agent: %s", p); - else + if ((p = getenv("HTTP_USER_AGENT")) != NULL) { + if (*p != '\0') + http_cmd(conn, "User-Agent: %s", p); + } else http_cmd(conn, "User-Agent: %s " _LIBFETCH_VER, getprogname()); if (url->offset > 0) http_cmd(conn, "Range: bytes=%lld-", (long long)url->offset); --- noua.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: