[Bug pyserial:135] reading from socket with timeout=None causes TypeError

diff --git a/pyserial/CHANGES.txt b/pyserial/CHANGES.txt
index dee6da0..1658dea 100644
--- a/pyserial/CHANGES.txt
+++ b/pyserial/CHANGES.txt
@@ -446,6 +446,7 @@
 
 - [Bug 3540332] SerialException not returned
 - [Bug pyserial:145] Error in socket_connection.py
+- [Bug pyserial:135] reading from socket with timeout=None causes TypeError
 
 Bugfixes (posix):
 
diff --git a/pyserial/serial/urlhandler/protocol_socket.py b/pyserial/serial/urlhandler/protocol_socket.py
index ccf7e14..0c96511 100644
--- a/pyserial/serial/urlhandler/protocol_socket.py
+++ b/pyserial/serial/urlhandler/protocol_socket.py
@@ -135,8 +135,11 @@
         until the requested number of bytes is read."""
         if not self._isOpen: raise portNotOpenError
         data = bytearray()
-        timeout = time.time() + self._timeout
-        while len(data) < size and time.time() < timeout:
+        if self._timeout is not None:
+            timeout = time.time() + self._timeout
+        else:
+            timeout = None
+        while len(data) < size and (timeout is None or time.time() < timeout):
             try:
                 # an implementation with internal buffer would be better
                 # performing...