commit:     051d75acf5e3fbca7c1083cb612e5f07a3a98919
Author:     Frédéric Pierret (fepitre) <frederic.pierret <AT> qubes-os <DOT> 
org>
AuthorDate: Tue Aug  4 13:12:08 2020 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Sep  7 22:49:53 2020 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=051d75ac

rsync: ignore addrinfos with proxy settings

Not doing so makes getting addrinfos failing due to
"Temporary failure in name resolution" due to proxy settings.

An alternative to this solution would be to define a socks.setdefaultproxy
and passing socks.socksocket to socket.

Bug: https://bugs.gentoo.org/740904
See: https://github.com/gentoo/portage/pull/607
Signed-off-by: Frédéric Pierret (fepitre) <frederic.pierret <AT> qubes-os.org>
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/sync/modules/rsync/rsync.py | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/lib/portage/sync/modules/rsync/rsync.py 
b/lib/portage/sync/modules/rsync/rsync.py
index 88b36ab79..35d1461e4 100644
--- a/lib/portage/sync/modules/rsync/rsync.py
+++ b/lib/portage/sync/modules/rsync/rsync.py
@@ -230,15 +230,16 @@ class RsyncSync(NewBase):
                        addrinfos = None
                        uris = []
 
-                       try:
-                               addrinfos = getaddrinfo_validate(
-                                       socket.getaddrinfo(getaddrinfo_host, 
None,
-                                       family, socket.SOCK_STREAM))
-                       except socket.error as e:
-                               writemsg_level(
-                                       "!!! getaddrinfo failed for '%s': %s\n"
-                                       % (_unicode_decode(hostname), str(e)),
-                                       noiselevel=-1, level=logging.ERROR)
+                       if 'RSYNC_PROXY' not in self.spawn_kwargs['env']:
+                               try:
+                                       addrinfos = getaddrinfo_validate(
+                                               socket.getaddrinfo(
+                                                       getaddrinfo_host, None, 
family, socket.SOCK_STREAM))
+                               except socket.error as e:
+                                       writemsg_level(
+                                               "!!! getaddrinfo failed for 
'%s': %s\n"
+                                               % (_unicode_decode(hostname), 
str(e)),
+                                               noiselevel=-1, 
level=logging.ERROR)
 
                        if addrinfos:
 

Reply via email to