git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4] Allow HTTP user agent string to be modified.

From
Jacob Helwig <jacob.helwig@gmail.com>
Date
Aug 11, 2010, 20:35 UTC
Message-ID
<AANLkTikzCVAb8YOZQhZ-sd6uhngiAQnhkB-k_JFZMem=@mail.gmail.com>
In-Reply-To
<1281558725-29938-1-git-send-email-olsonse@umich.edu>
On Wed, Aug 11, 2010 at 13:32, Spencer E. Olson <olsonse@umich.edu> wrote:
Show 5 quoted lines
> Some firewalls restrict HTTP connections based on the clients user agent.  This
> commit provides the user the ability to modify the user agent string via either
> a new config option (http.useragent) or by an environment variable
> (GIT_USER_AGENT).  Relevant documentation is added to Documentation/config.txt.
>

Missed switching GIT_USER_AGENT to GIT_HTTP_USER_AGENT here, in the commit message, but that seems like something easily enough fixed when applying.

Show 103 quoted lines
> Signed-off-by: Spencer E. Olson <olsonse@umich.edu>
> ---
>
> All,
>
> This includes the changes suggested by Ray Chuan and by Junio Hamano, with one
> minor additional change:  This changes the internal -DGIT_USER_AGENT to
> -DGIT_HTTP_USER_AGENT.
>
> Since GIT_HTTP_* seems to follow what several of the other HTTP related
> environement variables, I agree that using GIT_HTTP_USER_AGENT is better for the
> user interface (via env variables) than GIT_USER_AGENT.  I would like to
> additionally change the internal token also to GIT_HTTP_USER_AGENT just because
> it is clearer for other developers.
>
>
>  Documentation/config.txt |    9 +++++++++
>  Makefile                 |    2 +-
>  http.c                   |    9 ++++++++-
>  3 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index f81fb91..7253b71 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -1243,6 +1243,15 @@ http.noEPSV::
>        support EPSV mode. Can be overridden by the 'GIT_CURL_FTP_NO_EPSV'
>        environment variable. Default is false (curl will use EPSV).
>
> +http.useragent::
> +       The HTTP USER_AGENT string presented to an HTTP server.  The default
> +       value represents the version of the client git such as git/1.7.1.
> +       This option allows you to override this value to a more common value
> +       such as Mozilla/4.0.  This may be necessary, for instance, if
> +       connecting through a firewall that restricts HTTP connections to a set
> +       of common USER_AGENT strings (but not including those like git/1.7.1).
> +       Can be overridden by the 'GIT_HTTP_USER_AGENT' environment variable.
> +
>  i18n.commitEncoding::
>        Character encoding the commit messages are stored in; git itself
>        does not care per se, but this information is necessary e.g. when
> diff --git a/Makefile b/Makefile
> index e151516..f84f4a1 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1873,7 +1873,7 @@ builtin/init-db.s builtin/init-db.o: EXTRA_CPPFLAGS = \
>
>  config.s config.o: EXTRA_CPPFLAGS = -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"'
>
> -http.s http.o: EXTRA_CPPFLAGS = -DGIT_USER_AGENT='"git/$(GIT_VERSION)"'
> +http.s http.o: EXTRA_CPPFLAGS = -DGIT_HTTP_USER_AGENT='"git/$(GIT_VERSION)"'
>
>  ifdef NO_EXPAT
>  http-walker.s http-walker.o: EXTRA_CPPFLAGS = -DNO_EXPAT
> diff --git a/http.c b/http.c
> index 1320c50..0a5011f 100644
> --- a/http.c
> +++ b/http.c
> @@ -41,6 +41,7 @@ static long curl_low_speed_time = -1;
>  static int curl_ftp_no_epsv;
>  static const char *curl_http_proxy;
>  static char *user_name, *user_pass;
> +static const char *user_agent;
>
>  #if LIBCURL_VERSION_NUM >= 0x071700
>  /* Use CURLOPT_KEYPASSWD as is */
> @@ -196,6 +197,9 @@ static int http_options(const char *var, const char *value, void *cb)
>                return 0;
>        }
>
> +       if (!strcmp("http.useragent", var))
> +               return git_config_string(&user_agent, var, value);
> +
>        /* Fall back on the default ones */
>        return git_default_config(var, value, cb);
>  }
> @@ -279,7 +283,8 @@ static CURL *get_curl_handle(void)
>        if (getenv("GIT_CURL_VERBOSE"))
>                curl_easy_setopt(result, CURLOPT_VERBOSE, 1);
>
> -       curl_easy_setopt(result, CURLOPT_USERAGENT, GIT_USER_AGENT);
> +       curl_easy_setopt(result, CURLOPT_USERAGENT,
> +               user_agent ? user_agent : GIT_HTTP_USER_AGENT);
>
>        if (curl_ftp_no_epsv)
>                curl_easy_setopt(result, CURLOPT_FTP_USE_EPSV, 0);
> @@ -380,6 +385,8 @@ void http_init(struct remote *remote)
>  #endif
>        set_from_env(&ssl_cainfo, "GIT_SSL_CAINFO");
>
> +       set_from_env(&user_agent, "GIT_HTTP_USER_AGENT");
> +
>        low_speed_limit = getenv("GIT_HTTP_LOW_SPEED_LIMIT");
>        if (low_speed_limit != NULL)
>                curl_low_speed_limit = strtol(low_speed_limit, NULL, 10);
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
Previous: Spencer E. OlsonNext: Spencer E. Olson
Message 12 of 14 in “Allow HTTP user agent string to be modified.”
  1. Allow HTTP user agent string to be modified.Spencer E. Olson, Aug 7, 2010
  2. Ævar Arnfjörð BjarmasonAug 7, 2010
  3. Spencer E. OlsonAug 7, 2010
  4. Ævar Arnfjörð BjarmasonAug 7, 2010
  5. Tay Ray ChuanAug 8, 2010
  6. Tay Ray ChuanAug 8, 2010
  7. Spencer E. OlsonAug 8, 2010
  8. Allow HTTP user agent string to be modified.Spencer E. Olson, Aug 11, 2010
  9. Tay Ray ChuanAug 11, 2010
  10. Junio C HamanoAug 11, 2010
  11. Allow HTTP user agent string to be modified.Spencer E. Olson, Aug 11, 2010
  12. Jacob HelwigAug 11, 2010
  13. Allow HTTP user agent string to be modified.Spencer E. Olson, Aug 11, 2010
  14. Junio C HamanoAug 12, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.