Author: andar

Revision: 5468

Log:
        Fix client.connect() not firing the errback when a login attempt result 
is 0 (meaning no 
authorization)
Fix console connect command

Diff:
Modified: trunk/deluge/ui/client.py
===================================================================
--- trunk/deluge/ui/client.py   2009-07-06 11:51:06 UTC (rev 5467)
+++ trunk/deluge/ui/client.py   2009-07-06 20:00:41 UTC (rev 5468)
@@ -384,6 +384,11 @@
         self.login_deferred.callback(False)
 
     def __on_login(self, result, username):
+        if not result:
+            # We received a 0 auth level from the server which means it failed
+            self.login_deferred.errback(result)
+            return
+
         self.username = username
         # We need to tell the daemon what events we're interested in receiving
         if self.__factory.event_handlers:

Modified: trunk/deluge/ui/console/commands/connect.py
===================================================================
--- trunk/deluge/ui/console/commands/connect.py 2009-07-06 11:51:06 UTC (rev 
5467)
+++ trunk/deluge/ui/console/commands/connect.py 2009-07-06 20:00:41 UTC (rev 
5468)
@@ -40,17 +40,29 @@
 
 class Command(BaseCommand):
     """Connect to a new deluge server."""
-    def handle(self, host="", port="58846", username="", password="", 
**options):
+
+    usage = "Usage: connect <host[:port]> <username> <password>"
+
+    def handle(self, host="127.0.0.1:58846", username="", password="", 
**options):
         self.console = component.get("ConsoleUI")
+        try:
+            host, port = host.split(":")
+        except ValueError:
+            port = 58846
+        else:
+            port = int(port)
 
-        port = int(port)
-        d = client.connect(host, port, username, password)
-        def on_connect(result):
-            self.console.write("{!success!}Connected to %s:%s!" % (host, port))
+        def on_disconnect(result):
+            d = client.connect(host, port, username, password)
+            def on_connect(result):
+                self.console.write("{!success!}Connected to %s:%s!" % (host, 
port))
+                component.start()
 
-        def on_connect_fail(result):
-            self.console.write("{!error!}Failed to connect to %s:%s!" % (host, 
port))
+            def on_connect_fail(result):
+                self.console.write("{!error!}Failed to connect to %s:%s!" % 
(host, port))
 
-        d.addCallback(on_connect)
-        d.addErrback(on_connect_fail)
-        return d
+            d.addCallback(on_connect)
+            d.addErrback(on_connect_fail)
+            return d
+
+        client.disconnect().addCallback(on_disconnect)

Modified: trunk/deluge/ui/console/main.py
===================================================================
--- trunk/deluge/ui/console/main.py     2009-07-06 11:51:06 UTC (rev 5467)
+++ trunk/deluge/ui/console/main.py     2009-07-06 20:00:41 UTC (rev 5468)
@@ -140,6 +140,8 @@
         # Load all the commands
         self._commands = load_commands(os.path.join(UI_PATH, 'commands'))
 
+        client.set_disconnect_callback(self.on_client_disconnect)
+
         # Set the interactive flag to indicate where we should print the output
         self.interactive = True
         if args:
@@ -166,7 +168,8 @@
                 # any of the commands.
                 self.started_deferred.addCallback(on_started)
 
-        client.connect().addCallback(on_connect)
+        d = client.connect()
+        d.addCallback(on_connect)
 
         self.coreconfig = CoreConfig()
         if self.interactive:
@@ -397,3 +400,6 @@
         for index, (tid, name) in enumerate(self.torrents):
             if torrent_id == tid:
                 del self.torrents[index]
+
+    def on_client_disconnect(self):
+        component.stop()



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to