diff --git a/icmplib/sockets.py b/icmplib/sockets.py index 130f55a..518851d 100644 --- a/icmplib/sockets.py +++ b/icmplib/sockets.py @@ -317,20 +317,19 @@ def receive(self, request=None, timeout=2): if not self._sock: raise SocketUnavailableError - self._sock.settimeout(timeout) - time_limit = time() + timeout + start_time = time() + time_limit = start_time + timeout try: while True: + remaining_time = time_limit - time() + self._sock.settimeout(max(remaining_time, 0)) response = self._sock.recvfrom(1024) current_time = time() packet = response[0] source = response[1][0] - if current_time > time_limit: - raise socket.timeout - reply = self._parse_reply( packet=packet, source=source,