Skip to content

Commit

Permalink
ability to disable certificate check
Browse files Browse the repository at this point in the history
  • Loading branch information
theromis committed Aug 2, 2019
1 parent eeb449f commit 0a0756e
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions recws.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package recws

import (
"crypto/tls"
"errors"
"log"
"math/rand"
Expand Down Expand Up @@ -36,6 +37,7 @@ type RecConn struct {
// Proxy specifies the proxy function for the dialer
// defaults to ProxyFromEnvironment
Proxy func(*http.Request) (*url.URL, error)
TLSClientConfig *tls.Config
// SubscribeHandler fires after the connection successfully establish.
SubscribeHandler func() error
// KeepAliveTimeout is an interval for sending ping/pong messages
Expand Down Expand Up @@ -243,13 +245,14 @@ func (rc *RecConn) setDefaultProxy() {
}
}

func (rc *RecConn) setDefaultDialer(handshakeTimeout time.Duration) {
func (rc *RecConn) setDefaultDialer(tlsClientConfig *tls.Config, handshakeTimeout time.Duration) {
rc.mu.Lock()
defer rc.mu.Unlock()

rc.dialer = &websocket.Dialer{
HandshakeTimeout: handshakeTimeout,
Proxy: rc.Proxy,
TLSClientConfig: tlsClientConfig,
}
}

Expand All @@ -260,6 +263,20 @@ func (rc *RecConn) getHandshakeTimeout() time.Duration {
return rc.HandshakeTimeout
}

func (rc *RecConn) getTLSClientConfig() *tls.Config {
rc.mu.RLock()
defer rc.mu.RUnlock()

return rc.TLSClientConfig
}

func (rc *RecConn) SetTLSClientConfig(tlsClientConfig *tls.Config) {
rc.mu.Lock()
defer rc.mu.Unlock()

rc.TLSClientConfig = tlsClientConfig
}

// Dial creates a new client connection.
// The URL url specifies the host and request URI. Use requestHeader to specify
// the origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies
Expand All @@ -280,7 +297,7 @@ func (rc *RecConn) Dial(urlStr string, reqHeader http.Header) {
rc.setDefaultRecIntvlFactor()
rc.setDefaultHandshakeTimeout()
rc.setDefaultProxy()
rc.setDefaultDialer(rc.getHandshakeTimeout())
rc.setDefaultDialer(rc.getTLSClientConfig(), rc.getHandshakeTimeout())

// Connect
go rc.connect()
Expand Down

0 comments on commit 0a0756e

Please sign in to comment.