From 9b52e0d4e8dfb9e5782fa48cffba3fc1d9272962 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 21 May 2011 12:49:17 -0600 Subject: [PATCH] Fix #786264 (external IP and Ubuntu's 127.0.1.1 addr) --- src/calibre/library/server/base.py | 2 +- src/calibre/utils/mdns.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/calibre/library/server/base.py b/src/calibre/library/server/base.py index eea28469a9..862e724809 100644 --- a/src/calibre/library/server/base.py +++ b/src/calibre/library/server/base.py @@ -218,7 +218,7 @@ class LibraryServer(ContentServer, MobileServer, XMLServer, OPDSServer, Cache, cherrypy.engine.start() except: ip = get_external_ip() - if not ip or ip == '127.0.0.1': + if not ip or ip.startswith('127.'): raise cherrypy.log('Trying to bind to single interface: '+ip) cherrypy.config.update({'server.socket_host' : ip}) diff --git a/src/calibre/utils/mdns.py b/src/calibre/utils/mdns.py index b7cc8757d3..2be6bef49b 100644 --- a/src/calibre/utils/mdns.py +++ b/src/calibre/utils/mdns.py @@ -13,16 +13,17 @@ def _get_external_ip(): ipaddr = socket.gethostbyname(socket.gethostname()) except: ipaddr = '127.0.0.1' - if ipaddr == '127.0.0.1': + if ipaddr.startswith('127.'): for addr in ('192.0.2.0', '198.51.100.0', 'google.com'): try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect((addr, 0)) ipaddr = s.getsockname()[0] - if ipaddr != '127.0.0.1': - return ipaddr + if not ipaddr.startswith('127.'): + break except: time.sleep(0.3) + #print 'ipaddr: %s' % ipaddr return ipaddr _ext_ip = None