diff --git a/designate/service.py b/designate/service.py index c92012dbf..98c7f789d 100644 --- a/designate/service.py +++ b/designate/service.py @@ -339,7 +339,7 @@ class DNSService(object): # Handle TCP Responses msg_length = len(response) tcp_response = struct.pack("!H", msg_length) + response - client.send(tcp_response) + client.sendall(tcp_response) else: # Handle UDP Responses self._dns_sock_udp.sendto(response, addr) diff --git a/releasenotes/notes/mini-dns-tcp-c1a15742f5c71739.yaml b/releasenotes/notes/mini-dns-tcp-c1a15742f5c71739.yaml new file mode 100644 index 000000000..3cee585c7 --- /dev/null +++ b/releasenotes/notes/mini-dns-tcp-c1a15742f5c71739.yaml @@ -0,0 +1,10 @@ +--- +issues: + - The fix for minidns's issues TCP can cause minidns to fail to send some messages. + This manifests itself with eventlet not being able to send all the data + before socket is closed. +critical: + - Previous versions of eventlet changed the behaviour of socket.send() to + match socket.sendall(). in eventlet 0.18.0 this changed and it reverted + to the traditional behaviour. MiniDNS has been updated to allow minidns to + push large zone transfers over long range network connections