[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [stem/master] Stop waiting for HS publication when it fails



commit 4d1771cfff7117da3f3b2d9a304755d966613372
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date:   Mon May 11 12:37:39 2015 -0700

    Stop waiting for HS publication when it fails
    
    Our create_ephemeral_hidden_service()'s await_publication option didn't account
    for all requests failing.
---
 stem/control.py |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/stem/control.py b/stem/control.py
index fc86909..44a0b7d 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -2673,16 +2673,21 @@ class Controller(BaseController):
       # to just guess that if it's for the same hidden service authority then
       # it's what we're looking for.
 
-      authorities_uploaded_to = []
+      directories_uploaded_to, failures = [], []
 
       try:
         while True:
           event = hs_desc_queue.get()
 
           if event.action == stem.HSDescAction.UPLOAD and event.address == response.service_id:
-            authorities_uploaded_to.append(event.directory_fingerprint)
-          elif event.action == stem.HSDescAction.UPLOADED and event.directory_fingerprint in authorities_uploaded_to:
+            directories_uploaded_to.append(event.directory_fingerprint)
+          elif event.action == stem.HSDescAction.UPLOADED and event.directory_fingerprint in directories_uploaded_to:
             break  # successfully uploaded to a HS authority... maybe
+          elif event.action == stem.HSDescAction.FAILED and event.directory_fingerprint in directories_uploaded_to:
+            failures.append('%s (%s)' % (event.directory_fingerprint, event.reason))
+
+            if len(directories_uploaded_to) == len(failures):
+              raise stem.OperationFailed(message = 'Failed to upload our hidden service descriptor to %s' % ', '.join(failures))
       finally:
         self.remove_event_listener(hs_desc_listener)
 

_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits