From: david-sarah Date: Mon, 8 Aug 2011 18:02:04 +0000 (+0000) Subject: node.py: tolerate a UTF-8 BOM at the start of tahoe.cfg. fixes #1470 X-Git-Tag: allmydata-tahoe-1.10a1~207 X-Git-Url: https://git.rkrishnan.org/components/architecture.txt?a=commitdiff_plain;h=ba0df239273f3b525002da00abb0050cc3b8e426;p=tahoe-lafs%2Ftahoe-lafs.git node.py: tolerate a UTF-8 BOM at the start of tahoe.cfg. fixes #1470 --- diff --git a/src/allmydata/node.py b/src/allmydata/node.py index 06b707de..a77fdadc 100644 --- a/src/allmydata/node.py +++ b/src/allmydata/node.py @@ -122,7 +122,21 @@ class Node(service.MultiService): def read_config(self): self.error_about_old_config_files() 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", "") if not cfg_tubport: