From 21da42ea91d45c43372d027f72467ecd66a33b29 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Mon, 22 Apr 2013 13:44:50 -0700 Subject: [PATCH] Disable IPv6 when looking for tzdata updates. My problems connecting to ftp.iana.org are only via IPv6. Change-Id: I42e4bae7981ec4b64822f745a7a15544d77ef22d --- libc/tools/zoneinfo/update-tzdata.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libc/tools/zoneinfo/update-tzdata.py b/libc/tools/zoneinfo/update-tzdata.py index 2b30c156a..f06dac341 100755 --- a/libc/tools/zoneinfo/update-tzdata.py +++ b/libc/tools/zoneinfo/update-tzdata.py @@ -6,6 +6,7 @@ import ftplib import httplib import os import re +import socket import subprocess import sys import tarfile @@ -32,6 +33,14 @@ regions = ['africa', 'antarctica', 'asia', 'australasia', 'backward', 'etcetera', 'europe', 'northamerica', 'southamerica'] +def DisableIpv6(): + """Replaces socket.getaddrinfo with a version that only requests IPv4 addresses.""" + __real_getaddrinfo = socket.getaddrinfo + def __ipv4_getaddrinfo(host, port, family=0, socktype=0, proto=0, flags=0): + return __real_getaddrinfo(host, port, socket.AF_INET, socktype, proto, flags) + socket.getaddrinfo = __ipv4_getaddrinfo + + def GetCurrentTzDataVersion(): return open('%s/tzdata' % bionic_libc_zoneinfo_dir).read().split('\x00', 1)[0] @@ -148,9 +157,9 @@ def main(): tzdata_filenames = [] # The FTP server lets you download intermediate releases, and also lets you - # download the signatures for verification, so it's your best choice. It's - # also less reliable than the HTTP server, so we support that too as a backup. + # download the signatures for verification, so it's your best choice. use_ftp = True + DisableIpv6() # I've been unable to talk to the FTP server over IPv6 (2013-04). if use_ftp: ftp = ftplib.FTP('ftp.iana.org')