diff --git a/irc.py b/irc.py index 83142ec2630f221a7d913cbc90befee7c948e373..7a885d7dd8ba406c848653b81dce746b39b543b5 100644 --- a/irc.py +++ b/irc.py @@ -170,23 +170,26 @@ class IRC(asynchat.async_chat): self.userlist = { } self.data = b"" self.set_terminator(b"\r\n") - + # check ipv6 flag (added in a recent version, may not exist) if ('ipv6' in self.config) and self.config["ipv6"].lower().startswith("y"): stype = socket.AF_INET6 else: stype = socket.AF_INET - tup = socket.getaddrinfo(self.config["host"], int(self.config["port"]), stype, socket.SOCK_DGRAM, socket.IPPROTO_IP, socket.AI_CANONNAME)[0][4] - self.sock = socket.socket(stype, socket.SOCK_STREAM) - - if self.config["use_ssl"].lower().startswith("y"):self.sock = ssl.wrap_socket(self.sock) + # create socket + tup = socket.getaddrinfo(self.config["host"], int(self.config["port"]), stype)[0][4] + self.create_socket(stype, socket.SOCK_STREAM) + # check ssl + if self.config["use_ssl"].lower().startswith("y"): + self.ssl = ssl.wrap_socket(self.socket) + self.set_socket(self.ssl) + # connect try: - self.sock.connect(tup) + self.connect(tup) except ssl.SSLError as error: self.prnt('SSL Error connecting to server. (Are you using the right port?) Error message: %s' % error) return except socket.error as error: self.prnt('There was an error connecting to %s. %s' % (self.config["host"], error)) - return - self.set_socket(self.sock) + return def _getData(self): ret = self.data