From 15d0a99771eb8ed689753a5abc2359105020bf2c Mon Sep 17 00:00:00 2001 From: Roger Light Date: Sat, 7 Dec 2013 23:21:53 +0000 Subject: [PATCH] Handle EAGAIN on Windows. --- src/paho/mqtt/client.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/paho/mqtt/client.py b/src/paho/mqtt/client.py index 1a72c79..fae5f40 100755 --- a/src/paho/mqtt/client.py +++ b/src/paho/mqtt/client.py @@ -17,6 +17,7 @@ This is an MQTT v3.1 client module. MQTT is a lightweight pub/sub messaging protocol that is easy to implement and suitable for low powered devices. """ import errno +import platform import random import select import socket @@ -39,6 +40,11 @@ try: except ImportError: HAVE_DNS = False +if platform.system() == 'Windows': + EAGAIN = errno.WSAEWOULDBLOCK +else: + EAGAIN = errno.EAGAIN + if sys.version_info[0] < 3: PROTOCOL_NAME = "MQIsdp" else: @@ -1244,7 +1250,7 @@ class Client: (msg) = err if self._ssl and (msg.errno == ssl.SSL_ERROR_WANT_READ or msg.errno == ssl.SSL_ERROR_WANT_WRITE): return MQTT_ERR_AGAIN - if msg.errno == errno.EAGAIN: + if msg.errno == EAGAIN: return MQTT_ERR_AGAIN print(msg) return 1 @@ -1268,7 +1274,7 @@ class Client: (msg) = err if self._ssl and (msg.errno == ssl.SSL_ERROR_WANT_READ or msg.errno == ssl.SSL_ERROR_WANT_WRITE): return MQTT_ERR_AGAIN - if msg.errno == errno.EAGAIN: + if msg.errno == EAGAIN: return MQTT_ERR_AGAIN print(msg) return 1 @@ -1300,7 +1306,7 @@ class Client: (msg) = err if self._ssl and (msg.errno == ssl.SSL_ERROR_WANT_READ or msg.errno == ssl.SSL_ERROR_WANT_WRITE): return MQTT_ERR_AGAIN - if msg.errno == errno.EAGAIN: + if msg.errno == EAGAIN: return MQTT_ERR_AGAIN print(msg) return 1 @@ -1339,7 +1345,7 @@ class Client: (msg) = err if self._ssl and (msg.errno == ssl.SSL_ERROR_WANT_READ or msg.errno == ssl.SSL_ERROR_WANT_WRITE): return MQTT_ERR_AGAIN - if msg.errno == errno.EAGAIN: + if msg.errno == EAGAIN: return MQTT_ERR_AGAIN print(msg) return 1 -- 2.39.5