diff --git a/client/connection.go b/client/connection.go index aa9f2f5..5ac0918 100644 --- a/client/connection.go +++ b/client/connection.go @@ -413,15 +413,24 @@ func (conn *Conn) internalConnect(ctx context.Context) error { return err } contextProxyDialer, ok := proxyDialer.(proxy.ContextDialer) - if !ok { - return errors.New("Dialer for proxy does not support context") - } - conn.proxyDialer = contextProxyDialer - logging.Info("irc.Connect(): Connecting to %s.", conn.cfg.Server) - if s, err := conn.proxyDialer.DialContext(ctx, "tcp", conn.cfg.Server); err == nil { - conn.sock = s + if ok { + conn.proxyDialer = contextProxyDialer + logging.Info("irc.Connect(): Connecting to %s.", conn.cfg.Server) + if s, err := conn.proxyDialer.DialContext(ctx, "tcp", conn.cfg.Server); err == nil { + conn.sock = s + } else { + return err + } } else { - return err + logging.Warn("Dialer for proxy does not support context, please implement DialContext") + + conn.proxyDialer = proxyDialer + logging.Info("irc.Connect(): Connecting to %s.", conn.cfg.Server) + if s, err := conn.proxyDialer.Dial("tcp", conn.cfg.Server); err == nil { + conn.sock = s + } else { + return err + } } } else { logging.Info("irc.Connect(): Connecting to %s.", conn.cfg.Server)