'Make a tcp/ip connection, protect it with tls/ssl if possible and start XMPP stream.
Returns None or \'tcp\' or \'tls\', depending on the result.'

def connect(self, server=None, proxy=None, ssl=None, use_srv=None):

    if (not server):
        server = (self.Server, self.Port)
    if proxy:
        sock = transports.HTTPPROXYsocket(proxy, server, use_srv)
    else:
        sock = transports.TCPsocket(server, use_srv)
    connected = sock.PlugIn(self)
    if (not connected):
        sock.PlugOut()
        return
    (self._Server, self._Proxy) = (server, proxy)
    self.connected = 'tcp'
    if (((ssl is None) and (self.Connection.getPort() in (5223, 443))) or ssl):
        try:
            transports.TLS().PlugIn(self, now=1)
            self.connected = 'ssl'
        except socket.sslerror:
            return
    dispatcher.Dispatcher().PlugIn(self)
    while (self.Dispatcher.Stream._document_attrs is None):
        if (not self.Process(1)):
            return
    if (self.Dispatcher.Stream._document_attrs.has_key('version') and (self.Dispatcher.Stream._document_attrs['version'] == '1.0')):
        while ((not self.Dispatcher.Stream.features) and self.Process(1)):
            pass
    return self.connected
