Fix client.connect() not firing the errback when a login attempt result is 0 (meaning no

authorization)
Fix console connect command
This commit is contained in:
Andrew Resch 2009-07-06 20:00:41 +00:00
parent 66243d1859
commit b6793f7268
3 changed files with 34 additions and 11 deletions

View File

@ -384,6 +384,11 @@ class DaemonSSLProxy(DaemonProxy):
self.login_deferred.callback(False) self.login_deferred.callback(False)
def __on_login(self, result, username): 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 self.username = username
# We need to tell the daemon what events we're interested in receiving # We need to tell the daemon what events we're interested in receiving
if self.__factory.event_handlers: if self.__factory.event_handlers:

View File

@ -40,17 +40,29 @@ import deluge.component as component
class Command(BaseCommand): class Command(BaseCommand):
"""Connect to a new deluge server.""" """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") self.console = component.get("ConsoleUI")
try:
host, port = host.split(":")
except ValueError:
port = 58846
else:
port = int(port)
port = int(port) def on_disconnect(result):
d = client.connect(host, port, username, password) d = client.connect(host, port, username, password)
def on_connect(result): def on_connect(result):
self.console.write("{!success!}Connected to %s:%s!" % (host, port)) self.console.write("{!success!}Connected to %s:%s!" % (host, port))
component.start()
def on_connect_fail(result): def on_connect_fail(result):
self.console.write("{!error!}Failed to connect to %s:%s!" % (host, port)) self.console.write("{!error!}Failed to connect to %s:%s!" % (host, port))
d.addCallback(on_connect) d.addCallback(on_connect)
d.addErrback(on_connect_fail) d.addErrback(on_connect_fail)
return d return d
client.disconnect().addCallback(on_disconnect)

View File

@ -140,6 +140,8 @@ class ConsoleUI(component.Component):
# Load all the commands # Load all the commands
self._commands = load_commands(os.path.join(UI_PATH, '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 # Set the interactive flag to indicate where we should print the output
self.interactive = True self.interactive = True
if args: if args:
@ -166,7 +168,8 @@ class ConsoleUI(component.Component):
# any of the commands. # any of the commands.
self.started_deferred.addCallback(on_started) self.started_deferred.addCallback(on_started)
client.connect().addCallback(on_connect) d = client.connect()
d.addCallback(on_connect)
self.coreconfig = CoreConfig() self.coreconfig = CoreConfig()
if self.interactive: if self.interactive:
@ -397,3 +400,6 @@ class ConsoleUI(component.Component):
for index, (tid, name) in enumerate(self.torrents): for index, (tid, name) in enumerate(self.torrents):
if torrent_id == tid: if torrent_id == tid:
del self.torrents[index] del self.torrents[index]
def on_client_disconnect(self):
component.stop()