@@ -94,11 +94,6 @@ def set_socket(sock, iface=None):
94
94
_the_interface = iface
95
95
_the_sock .set_interface (iface )
96
96
97
- def unpretty_ip (ip ): # pylint: disable=no-self-use, invalid-name
98
- """Converts a dotted-quad string to a bytearray IP address"""
99
- octets = [int (x ) for x in ip .split ('.' )]
100
- return bytes (octets )
101
-
102
97
class MQTT :
103
98
"""MQTT Client for CircuitPython
104
99
:param str broker: MQTT Broker URL or IP Address.
@@ -119,7 +114,7 @@ def __init__(self, broker, port=None, username=None,
119
114
self ._sock = None
120
115
# broker
121
116
try : # set broker IP
122
- self .broker = unpretty_ip (broker )
117
+ self .broker = _the_interface . unpretty_ip (broker )
123
118
except ValueError : # set broker URL
124
119
self .broker = broker
125
120
# port/ssl
@@ -223,20 +218,22 @@ def connect(self, clean_session=True):
223
218
self .broker , port = self .broker .split (":" , 1 )
224
219
port = int (port )
225
220
226
- addr = _the_sock .getaddrinfo (self .broker , self .port )[0 ]
227
- self ._sock = _the_sock .socket (addr [0 ], _the_sock . SOCK_STREAM , addr [2 ])
221
+ addr = _the_sock .getaddrinfo (self .broker , self .port , 0 , _the_sock . SOCK_STREAM )[0 ]
222
+ self ._sock = _the_sock .socket (addr [0 ], addr [ 1 ] , addr [2 ])
228
223
self ._sock .settimeout (15 )
229
224
if self .port == 8883 :
230
225
try :
231
226
if self .logger is not None :
232
227
self .logger .debug ('Attempting to establish secure MQTT connection...' )
233
- self ._sock .connect (addr [ - 1 ], TLS_MODE )
228
+ self ._sock .connect (( self . broker , self . port ), _the_interface . TLS_MODE )
234
229
except RuntimeError as e :
235
230
raise MMQTTException ("Invalid broker address defined." , e )
236
231
else :
237
232
try :
238
233
if self .logger is not None :
239
234
self .logger .debug ('Attempting to establish insecure MQTT connection...' )
235
+ if hasattr (self .broker , "extend" ):
236
+ self .broker = _the_interface .pretty_ip (self .broker )
240
237
self ._sock .connect (addr [- 1 ], TCP_MODE )
241
238
except RuntimeError as e :
242
239
raise MMQTTException ("Invalid broker address defined." , e )
@@ -680,7 +677,7 @@ def _check_topic(topic):
680
677
if not topic :
681
678
raise MMQTTException ('Topic may not be empty.' )
682
679
# [MQTT-4.7.3-3]
683
- elif len (topic .encode ('utf-8' )) > MQTT_TOPIC_LENGTH_LIMIT :
680
+ if len (topic .encode ('utf-8' )) > MQTT_TOPIC_LENGTH_LIMIT :
684
681
raise MMQTTException ('Topic length is too large.' )
685
682
686
683
@staticmethod
0 commit comments