]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
python:tests/dns_base: let dns_transaction_tcp() handle short receives
authorStefan Metzmacher <metze@samba.org>
Fri, 31 May 2024 06:07:24 +0000 (08:07 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 6 Jun 2024 02:13:33 +0000 (02:13 +0000)
With socket_wrapper we only get 1500 byte chunks...

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13019

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/tests/dns_base.py

index f0d78327f27e1faceddc14120c451602ea2d8811..96e1d5be901688482a43152d88588f29869b1ec8 100644 (file)
@@ -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:])