@@ -94,11 +94,6 @@ def set_socket(sock, iface=None):
9494 _the_interface = iface
9595 _the_sock .set_interface (iface )
9696
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-
10297class MQTT :
10398 """MQTT Client for CircuitPython
10499 :param str broker: MQTT Broker URL or IP Address.
@@ -119,7 +114,7 @@ def __init__(self, broker, port=None, username=None,
119114 self ._sock = None
120115 # broker
121116 try : # set broker IP
122- self .broker = unpretty_ip (broker )
117+ self .broker = _the_interface . unpretty_ip (broker )
123118 except ValueError : # set broker URL
124119 self .broker = broker
125120 # port/ssl
@@ -223,20 +218,22 @@ def connect(self, clean_session=True):
223218 self .broker , port = self .broker .split (":" , 1 )
224219 port = int (port )
225220
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 ])
228223 self ._sock .settimeout (15 )
229224 if self .port == 8883 :
230225 try :
231226 if self .logger is not None :
232227 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 )
234229 except RuntimeError as e :
235230 raise MMQTTException ("Invalid broker address defined." , e )
236231 else :
237232 try :
238233 if self .logger is not None :
239234 self .logger .debug ('Attempting to establish insecure MQTT connection...' )
235+ if hasattr (self .broker , "extend" ):
236+ self .broker = _the_interface .pretty_ip (self .broker )
240237 self ._sock .connect (addr [- 1 ], TCP_MODE )
241238 except RuntimeError as e :
242239 raise MMQTTException ("Invalid broker address defined." , e )
@@ -680,7 +677,7 @@ def _check_topic(topic):
680677 if not topic :
681678 raise MMQTTException ('Topic may not be empty.' )
682679 # [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 :
684681 raise MMQTTException ('Topic length is too large.' )
685682
686683 @staticmethod
0 commit comments