--- a/tests/testlib/badserverext.py Fri Jan 21 03:05:43 2022 +0100
+++ b/tests/testlib/badserverext.py Fri Jan 21 11:15:56 2022 +0100
@@ -157,32 +157,30 @@
bmethod = method.encode('ascii')
func = getattr(orig, method)
- # No read limit. Call original function.
- if not remaining:
- result = func(size)
- obj._writelog(
- b'%s(%d) -> (%d) %s' % (bmethod, size, len(result), result)
- )
- return result
+ requested_size = size
+ actual_size = size
+
+ if remaining:
+ if size < 0:
+ actual_size = remaining
+ else:
+ actual_size = min(remaining, requested_size)
- origsize = size
+ result = func(actual_size)
- if size < 0:
- size = remaining
+ if remaining:
+ remaining -= len(result)
+ self.remaining_recv_bytes = remaining
+
+ if requested_size == actual_size:
+ msg = b'%s(%d) -> (%d) %s'
+ msg %= (bmethod, requested_size, len(result), result)
else:
- size = min(remaining, size)
-
- result = func(size)
- remaining -= len(result)
+ msg = b'%s(%d from %d) -> (%d) %s'
+ msg %= (bmethod, actual_size, requested_size, len(result), result)
+ obj._writelog(msg)
- obj._writelog(
- b'%s(%d from %d) -> (%d) %s'
- % (bmethod, size, origsize, len(result), result)
- )
-
- self.remaining_recv_bytes = remaining
-
- if remaining <= 0:
+ if remaining is not None and remaining <= 0:
obj._writelog(b'read limit reached; closing socket')
obj._cond_close()