diff --git a/proxy.go b/proxy.go index e87a8c9..26bbd0f 100644 --- a/proxy.go +++ b/proxy.go @@ -6,6 +6,7 @@ package websocket import ( "bufio" + "crypto/tls" "encoding/base64" "errors" "net" @@ -20,10 +21,21 @@ func (fn netDialerFunc) Dial(network, addr string) (net.Conn, error) { return fn(network, addr) } +type tlsDialer struct { +} + +func (t *tlsDialer) Dial(network, addr string) (c net.Conn, err error) { + return tls.DialWithDialer(&net.Dialer{}, network, addr, &tls.Config{}) +} + func init() { proxy_RegisterDialerType("http", func(proxyURL *url.URL, forwardDialer proxy_Dialer) (proxy_Dialer, error) { return &httpProxyDialer{proxyURL: proxyURL, forwardDial: forwardDialer.Dial}, nil }) + proxy_RegisterDialerType("https", func(proxyURL *url.URL, forwardDialer proxy_Dialer) (proxy_Dialer, error) { + dialer := &tlsDialer{} + return &httpProxyDialer{proxyURL: proxyURL, forwardDial: dialer.Dial}, nil + }) } type httpProxyDialer struct {