| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package clickhouse
- import (
- "crypto/tls"
- "sync"
- )
- // Based on the original implementation in the project go-sql-driver/mysql:
- // https://github.com/go-sql-driver/mysql/blob/master/utils.go
- var (
- tlsConfigLock sync.RWMutex
- tlsConfigRegistry map[string]*tls.Config
- )
- // RegisterTLSConfig registers a custom tls.Config to be used with sql.Open.
- func RegisterTLSConfig(key string, config *tls.Config) error {
- tlsConfigLock.Lock()
- if tlsConfigRegistry == nil {
- tlsConfigRegistry = make(map[string]*tls.Config)
- }
- tlsConfigRegistry[key] = config
- tlsConfigLock.Unlock()
- return nil
- }
- // DeregisterTLSConfig removes the tls.Config associated with key.
- func DeregisterTLSConfig(key string) {
- tlsConfigLock.Lock()
- if tlsConfigRegistry != nil {
- delete(tlsConfigRegistry, key)
- }
- tlsConfigLock.Unlock()
- }
- func getTLSConfigClone(key string) (config *tls.Config) {
- tlsConfigLock.RLock()
- if v, ok := tlsConfigRegistry[key]; ok {
- config = v.Clone()
- }
- tlsConfigLock.RUnlock()
- return
- }
|