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