[tor-commits] [bridgedb/master] Workaround strange file descriptor issue in Stem.

isis at torproject.org isis at torproject.org
Sat Mar 21 02:02:57 UTC 2015


commit f59121dc25a256ae9e24f65d0e29ea4109ab102a
Author: Isis Lovecruft <isis at torproject.org>
Date:   Fri Aug 29 09:58:09 2014 +0000

    Workaround strange file descriptor issue in Stem.
    
    For reasons I am unable as of yet to determine, if I call
    `stem.descriptor.router_status_entry._parse_file()` with its `start_position`
    parameter, giving it the byte offset in the file to start reading at, as well
    as the file descriptor itself, that Stem function does *not* reliably `seek()`
    to that byte offset in the file.
    
    The failure results of the last commit, e47247869, can be seen here:
    https://travis-ci.org/isislovecruft/bridgedb/jobs/33874252
    
    The fix -- don't ask me why it works, although I suspect either the scoping of
    Python's `with` syntax or some issue with passing file descriptors from an
    asynchronous program to a blocking one -- is to call `seek()` before passing
    the file descriptor.
---
 lib/bridgedb/parse/descriptors.py |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/bridgedb/parse/descriptors.py b/lib/bridgedb/parse/descriptors.py
index 5028ad3..49d6e8a 100644
--- a/lib/bridgedb/parse/descriptors.py
+++ b/lib/bridgedb/parse/descriptors.py
@@ -59,8 +59,8 @@ def parseNetworkStatusFile(filename, validate=True, skipHeaders=True,
             while not fh.readline().startswith('r '):
                 position = fh.tell()
         logging.debug("Skipping %d bytes of networkstatus file." % position)
-        document = _parseNSFile(fh, validate, entry_class=descriptorClass,
-                                start_position=position)
+        fh.seek(position)
+        document = _parseNSFile(fh, validate, entry_class=descriptorClass)
         routers.extend(list(document))
     logging.info("Closed networkstatus file: %s" % filename)
 





More information about the tor-commits mailing list