diff options
-rw-r--r-- | man/make.conf.5 | 6 | ||||
-rw-r--r-- | pym/emerge/__init__.py | 12 |
2 files changed, 16 insertions, 2 deletions
diff --git a/man/make.conf.5 b/man/make.conf.5 index a0d95c022..dc75f97f1 100644 --- a/man/make.conf.5 +++ b/man/make.conf.5 @@ -356,6 +356,12 @@ emerge is running at. In other words, this will not set the nice level, it will increment it. For more information about nice levels and what are acceptable ranges, see \fBnice\fR(1). .TP +\fBPORTAGE_RSYNC_INITIAL_TIMEOUT\fR = \fIinteger\fR +Used by \fBemerge \-\-sync\fR as a timeout for the initial connection to an +rsync server. +.br +Defaults to 15 seconds. +.TP \fBPORTAGE_RSYNC_EXTRA_OPTS\fR = \fI[rsync options string]\fR Additional rsync options to be used by \fBemerge \-\-sync\fR. .br diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index 193c7c33e..5f4219259 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -4059,6 +4059,12 @@ def action_sync(settings, trees, mtimedb, myopts, myaction): del content try: + rsync_initial_timeout = \ + int(settings.get("PORTAGE_RSYNC_INITIAL_TIMEOUT", "15")) + except ValueError: + rsync_initial_timeout = 15 + + try: if settings.has_key("RSYNC_RETRIES"): print yellow("WARNING:")+" usage of RSYNC_RETRIES is deprecated, use PORTAGE_RSYNC_RETRIES instead" maxretries=int(settings["RSYNC_RETRIES"]) @@ -4167,14 +4173,16 @@ def action_sync(settings, trees, mtimedb, myopts, myaction): # Timeout here in case the server is unresponsive. The # --timeout rsync option doesn't apply to the initial # connection attempt. - signal.alarm(15) + if rsync_initial_timeout: + signal.alarm(rsync_initial_timeout) try: mypids.extend(portage.process.spawn( mycommand, env=settings.environ(), returnpid=True)) exitcode = os.waitpid(mypids[0], 0)[1] content = portage.grabfile(tmpservertimestampfile) finally: - signal.alarm(0) + if rsync_initial_timeout: + signal.alarm(0) try: os.unlink(tmpservertimestampfile) except OSError: |