Bläddra i källkod

Creates conf.Net.TLS.Config if not provided

Diego Alvarez 5 år sedan
förälder
incheckning
cb293024a2
1 ändrade filer med 8 tillägg och 4 borttagningar
  1. 8 4
      broker.go

+ 8 - 4
broker.go

@@ -165,18 +165,22 @@ func (b *Broker) Open(conf *Config) error {
 
 
 		if conf.Net.TLS.Enable {
 		if conf.Net.TLS.Enable {
 			Logger.Printf("Using tls")
 			Logger.Printf("Using tls")
-
+			cfg := conf.Net.TLS.Config
+			if cfg == nil {
+				cfg = &tls.Config{}
+			}
 			// If no ServerName is set, infer the ServerName
 			// If no ServerName is set, infer the ServerName
 			// from the hostname we're connecting to.
 			// from the hostname we're connecting to.
-			if conf.Net.TLS.Config.ServerName == "" {
+			// Gets the hostname as tls.DialWithDialer does it.
+			if cfg.ServerName == "" {
 				colonPos := strings.LastIndex(b.addr, ":")
 				colonPos := strings.LastIndex(b.addr, ":")
 				if colonPos == -1 {
 				if colonPos == -1 {
 					colonPos = len(b.addr)
 					colonPos = len(b.addr)
 				}
 				}
 				hostname := b.addr[:colonPos]
 				hostname := b.addr[:colonPos]
-				conf.Net.TLS.Config.ServerName = hostname
+				cfg.ServerName = hostname
 			}
 			}
-			b.conn = tls.Client(b.conn, conf.Net.TLS.Config)
+			b.conn = tls.Client(b.conn, cfg)
 		}
 		}
 
 
 		b.conn = newBufConn(b.conn)
 		b.conn = newBufConn(b.conn)