node.py: tolerate a UTF-8 BOM at the start of tahoe.cfg. fixes #1470

This commit is contained in:
david-sarah 2011-08-08 18:02:04 +00:00
parent 87ca4fc705
commit ba0df23927

View File

@ -122,7 +122,21 @@ class Node(service.MultiService):
def read_config(self): def read_config(self):
self.error_about_old_config_files() self.error_about_old_config_files()
self.config = ConfigParser.SafeConfigParser() self.config = ConfigParser.SafeConfigParser()
self.config.read([os.path.join(self.basedir, "tahoe.cfg")])
tahoe_cfg = os.path.join(self.basedir, "tahoe.cfg")
try:
f = open(tahoe_cfg, "rb")
try:
# Skip any initial Byte Order Mark. Since this is an ordinary file, we
# don't need to handle incomplete reads, and can assume seekability.
if f.read(3) != '\xEF\xBB\xBF':
f.seek(0)
self.config.readfp(f)
finally:
f.close()
except EnvironmentError:
if os.path.exists(tahoe_cfg):
raise
cfg_tubport = self.get_config("node", "tub.port", "") cfg_tubport = self.get_config("node", "tub.port", "")
if not cfg_tubport: if not cfg_tubport: