From 8e443f9cdc2d60391fcfebda4ec45f3e81c39ad2 Mon Sep 17 00:00:00 2001 From: gry <guppy@123mail.org> Date: Tue, 30 Oct 2012 12:57:19 +1030 Subject: [PATCH] Use asyncore methods instead of raw sockets; support ipv6 --- irc.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/irc.py b/irc.py index 83142ec..7a885d7 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 -- GitLab