|
@@ -21,6 +21,7 @@ import threading
|
|
|
import time
|
|
|
import errno
|
|
|
from isc.datasrc import sqlite3_ds
|
|
|
+from isc.net import addr
|
|
|
import isc
|
|
|
try:
|
|
|
from pydnspp import *
|
|
@@ -90,9 +91,9 @@ class ZoneNotifyInfo:
|
|
|
self._sock = None
|
|
|
self.notify_timeout = None
|
|
|
|
|
|
- def create_socket(self, addrinfo):
|
|
|
- # XXX we'll fix this
|
|
|
- self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
|
+ def create_socket(self, dest_addr):
|
|
|
+ self._sock = socket.socket(addr.IPAddr(dest_addr).family,
|
|
|
+ socket.SOCK_DGRAM)
|
|
|
return self._sock
|
|
|
|
|
|
def get_socket(self):
|
|
@@ -392,12 +393,13 @@ class NotifyOut:
|
|
|
render.set_length_limit(512)
|
|
|
msg.to_wire(render)
|
|
|
zone_notify_info.notify_msg_id = qid
|
|
|
- sock = zone_notify_info.create_socket(addrinfo)
|
|
|
try:
|
|
|
+ sock = zone_notify_info.create_socket(addrinfo[0])
|
|
|
sock.sendto(render.get_data(), 0, addrinfo)
|
|
|
self._log_msg('info', 'sending notify to %s' % addr_to_str(addrinfo))
|
|
|
- except socket.error as err:
|
|
|
- self._log_msg('error', 'send notify to %s failed: %s' % (addr_to_str(addrinfo), str(err)))
|
|
|
+ except (socket.error, addr.InvalidAddress) as err:
|
|
|
+ self._log_msg('error', 'send notify to %s failed: %s' %
|
|
|
+ (addr_to_str(addrinfo), str(err)))
|
|
|
return False
|
|
|
|
|
|
return True
|