From: Stefan Metzmacher Date: Fri, 31 May 2024 06:07:24 +0000 (+0200) Subject: python:tests/dns_base: let dns_transaction_tcp() handle short receives X-Git-Tag: tdb-1.4.11~459 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c741d0f3969abe821e8ee2a10f848159eb2749fe;p=thirdparty%2Fsamba.git python:tests/dns_base: let dns_transaction_tcp() handle short receives With socket_wrapper we only get 1500 byte chunks... BUG: https://bugzilla.samba.org/show_bug.cgi?id=13019 Signed-off-by: Stefan Metzmacher Reviewed-by: Andrew Bartlett --- diff --git a/python/samba/tests/dns_base.py b/python/samba/tests/dns_base.py index f0d78327f27..96e1d5be901 100644 --- a/python/samba/tests/dns_base.py +++ b/python/samba/tests/dns_base.py @@ -151,7 +151,18 @@ class DNSTest(TestCaseInTempDir): tcp_packet += send_packet s.sendall(tcp_packet) - recv_packet = s.recv(0xffff + 2, 0) + recv_packet = b'' + length = None + for i in range(0, 2 + 0xffff): + if len(recv_packet) >= 2: + length, = struct.unpack('!H', recv_packet[0:2]) + remaining = 2 + length + else: + remaining = 2 + 12 + remaining -= len(recv_packet) + if remaining == 0: + break + recv_packet += s.recv(remaining, 0) if dump: print(self.hexdump(recv_packet)) response = ndr.ndr_unpack(dns.name_packet, recv_packet[2:])