Browse Source

refacotor(transporter): make TLS config explicit

Brian Waldon 12 years ago
parent
commit
089021ca6d
3 changed files with 11 additions and 9 deletions
  1. 4 1
      etcd.go
  2. 6 6
      server/transporter.go
  3. 1 2
      tests/server_utils.go

+ 4 - 1
etcd.go

@@ -144,7 +144,10 @@ func main() {
 	}
 
 	// Create Raft transporter and server
-	raftTransporter := server.NewTransporter(peerTLSConfig.Scheme, peerTLSConfig.Client, followersStats, serverStats, registry, heartbeatTimeout, dialTimeout, responseHeaderTimeout)
+	raftTransporter := server.NewTransporter(followersStats, serverStats, registry, heartbeatTimeout, dialTimeout, responseHeaderTimeout)
+	if psConfig.Scheme == "https" {
+		raftTransporter.SetTLSConfig(peerTLSConfig.Client)
+	}
 	raftServer, err := raft.NewServer(info.Name, config.DataDir, raftTransporter, store, ps, "")
 	if err != nil {
 		log.Fatal(err)

+ 6 - 6
server/transporter.go

@@ -29,7 +29,7 @@ type dialer func(network, addr string) (net.Conn, error)
 // Create transporter using by raft server
 // Create http or https transporter based on
 // whether the user give the server cert and key
-func NewTransporter(scheme string, tlsConf tls.Config, followersStats *raftFollowersStats, serverStats *raftServerStats, registry *Registry, dialTimeout, requestTimeout, responseHeaderTimeout time.Duration) *transporter {
+func NewTransporter(followersStats *raftFollowersStats, serverStats *raftServerStats, registry *Registry, dialTimeout, requestTimeout, responseHeaderTimeout time.Duration) *transporter {
 	tr := &http.Transport{
 		Dial: func(network, addr string) (net.Conn, error) {
 			return net.DialTimeout(network, addr, dialTimeout)
@@ -37,11 +37,6 @@ func NewTransporter(scheme string, tlsConf tls.Config, followersStats *raftFollo
 		ResponseHeaderTimeout: responseHeaderTimeout,
 	}
 
-	if scheme == "https" {
-		tr.TLSClientConfig = &tlsConf
-		tr.DisableCompression = true
-	}
-
 	t := transporter{
 		client:         &http.Client{Transport: tr},
 		transport:      tr,
@@ -54,6 +49,11 @@ func NewTransporter(scheme string, tlsConf tls.Config, followersStats *raftFollo
 	return &t
 }
 
+func (t *transporter) SetTLSConfig(tlsConf tls.Config) {
+	t.transport.TLSClientConfig = &tlsConf
+	t.transport.DisableCompression = true
+}
+
 // Sends AppendEntries RPCs to a peer when the server is the leader.
 func (t *transporter) SendAppendEntriesRequest(server raft.Server, peer *raft.Peer, req *raft.AppendEntriesRequest) *raft.AppendEntriesResponse {
 	var b bytes.Buffer

+ 1 - 2
tests/server_utils.go

@@ -46,10 +46,9 @@ func RunServer(f func(*server.Server)) {
 	}
 
 	// Create Raft transporter and server
-	tls := &server.TLSConfig{Scheme: "http"}
 	dialTimeout := (3 * testHeartbeatTimeout) + testElectionTimeout
 	responseHeaderTimeout := (3 * testHeartbeatTimeout) + testElectionTimeout
-	raftTransporter := server.NewTransporter(tls.Scheme, tls.Client, followersStats, serverStats, registry,	testHeartbeatTimeout, dialTimeout, responseHeaderTimeout)
+	raftTransporter := server.NewTransporter(followersStats, serverStats, registry,	testHeartbeatTimeout, dialTimeout, responseHeaderTimeout)
 	raftServer, err := raft.NewServer(testName, path, raftTransporter, store, ps, "")
 	if err != nil {
 		panic(err)