kopia lustrzana https://github.com/Yakifo/amqtt
Only setting session username/password if it is not already set. This is to prevent failures when the broker is reconnecting without username/password
rodzic
7eb86d9eee
commit
5a241d7739
|
@ -349,8 +349,8 @@ class MQTTClient:
|
|||
uri_attributes = urlparse(self.session.broker_uri)
|
||||
scheme = uri_attributes.scheme
|
||||
secure = True if scheme in ('mqtts', 'wss') else False
|
||||
self.session.username = uri_attributes.username
|
||||
self.session.password = uri_attributes.password
|
||||
self.session.username = self.session.username if self.session.username else uri_attributes.username
|
||||
self.session.password = self.session.password if self.session.password else uri_attributes.password
|
||||
self.session.remote_address = uri_attributes.hostname
|
||||
self.session.remote_port = uri_attributes.port
|
||||
if scheme in ('mqtt', 'mqtts') and not self.session.remote_port:
|
||||
|
|
|
@ -111,6 +111,31 @@ class MQTTClientTest(unittest.TestCase):
|
|||
except Exception as ae:
|
||||
future.set_exception(ae)
|
||||
|
||||
future = asyncio.Future(loop=self.loop)
|
||||
self.loop.run_until_complete(test_coro())
|
||||
if future.exception():
|
||||
raise future.exception()
|
||||
raise future.exception()
|
||||
|
||||
def test_reconnect_ws_retain_username_password(self):
|
||||
@asyncio.coroutine
|
||||
def test_coro():
|
||||
try:
|
||||
broker = Broker(broker_config, plugin_namespace="hbmqtt.test.plugins")
|
||||
yield from broker.start()
|
||||
client = MQTTClient()
|
||||
yield from client.connect('ws://fred:password@127.0.0.1:8080/')
|
||||
self.assertIsNotNone(client.session)
|
||||
yield from client.disconnect()
|
||||
yield from client.reconnect()
|
||||
|
||||
self.assertIsNotNone(client.session.username)
|
||||
self.assertIsNotNone(client.session.password)
|
||||
yield from broker.shutdown()
|
||||
future.set_result(True)
|
||||
except Exception as ae:
|
||||
future.set_exception(ae)
|
||||
|
||||
future = asyncio.Future(loop=self.loop)
|
||||
self.loop.run_until_complete(test_coro())
|
||||
if future.exception():
|
||||
|
|
Ładowanie…
Reference in New Issue