# HG changeset patch # User Jun Wu # Date 2016-03-02 10:42:58 # Node ID ffd3ac07b1d79dda7f57bd826208fdaf92a76717 # Parent 2f0f352d41969ddbfe9b7dd4010dbd27b893d7b6 chg: limit reconnect attempts Some users may have hg as a wrapper script which sets sensitive environment variables (like setting up virtualenv). This will make chg redirect forever because the environment variables are never considered up to date. This patch adds a limit (10) for reconnect attempts and warn the user with a possible solution if the limit is exceeded. diff --git a/contrib/chg/chg.c b/contrib/chg/chg.c --- a/contrib/chg/chg.c +++ b/contrib/chg/chg.c @@ -549,6 +549,7 @@ int main(int argc, const char *argv[], c } hgclient_t *hgc; + size_t retry = 0; while (1) { hgc = connectcmdserver(&opts); if (!hgc) @@ -560,6 +561,13 @@ int main(int argc, const char *argv[], c runinstructions(&opts, insts); free(insts); hgc_close(hgc); + if (++retry > 10) + abortmsg("too many redirections.\n" + "Please make sure %s is not a wrapper which " + "changes sensitive environment variables " + "before executing hg. If you have to use a " + "wrapper, wrap chg instead of hg.", + gethgcmd()); } setupsignalhandler(hgc_peerpid(hgc));