From dcb25db6e51b033c625fecea684523e223569f7b Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sat, 1 Mar 2014 09:22:14 +0100 Subject: [PATCH] Add support for SRV records in domain name resolution. --- src/drivers/Socket.py | 4 +++- src/utils/net.py | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/drivers/Socket.py b/src/drivers/Socket.py index 1dc2984e9..6691d9c8d 100644 --- a/src/drivers/Socket.py +++ b/src/drivers/Socket.py @@ -290,9 +290,11 @@ class SocketDriver(drivers.IrcDriver, drivers.ServersMixin): drivers.log.connectError(self.currentServer, e) self.scheduleReconnect() return + port = server[1] drivers.log.connect(self.currentServer) try: - self.conn = utils.net.getSocket(address, socks_proxy) + self.conn = utils.net.getSocket(address, port=port, + socks_proxy=socks_proxy) except socket.error as e: drivers.log.connectError(self.currentServer, e) self.scheduleReconnect() diff --git a/src/utils/net.py b/src/utils/net.py index 45352b74c..7381230db 100644 --- a/src/utils/net.py +++ b/src/utils/net.py @@ -40,20 +40,20 @@ from .web import _ipAddr, _domain emailRe = re.compile(r"^(\w&.+-]+!)*[\w&.+-]+@(%s|%s)$" % (_domain, _ipAddr), re.I) -def getAddressFromHostname(host, attempt=0): - addrinfo = socket.getaddrinfo(host, None) +def getAddressFromHostname(host, port=None, attempt=0): + addrinfo = socket.getaddrinfo(host, port) addresses = [] for (family, socktype, proto, canonname, sockaddr) in addrinfo: if sockaddr[0] not in addresses: addresses.append(sockaddr[0]) return addresses[attempt % len(addresses)] -def getSocket(host, socks_proxy=None, vhost=None, vhostv6=None): +def getSocket(host, port=None, socks_proxy=None, vhost=None, vhostv6=None): """Returns a socket of the correct AF_INET type (v4 or v6) in order to communicate with host. """ if not socks_proxy: - addrinfo = socket.getaddrinfo(host, None) + addrinfo = socket.getaddrinfo(host, port) host = addrinfo[0][4][0] if socks_proxy: import socks