consul: Write the byte to set the RPC mode

This commit is contained in:
Armon Dadgar 2013-12-09 14:29:20 -08:00
parent 6e9d7dc0fd
commit c28ebbf60f
2 changed files with 14 additions and 2 deletions

View File

@ -14,7 +14,9 @@ type Conn struct {
// ConnPool is used to maintain a connection pool to other
// Consul servers. This is used to reduce the latency of
// RPC requests between servers
// RPC requests between servers. It is only used to pool
// connections in the rpcConsul mode. Raft connections
// are pooled seperately.
type ConnPool struct {
sync.Mutex
@ -99,6 +101,9 @@ func (p *ConnPool) getNewConn(addr net.Addr) (*Conn, error) {
conn.SetKeepAlive(true)
conn.SetNoDelay(true)
// Write the Consul RPC byte to set the mode
conn.Write([]byte{byte(rpcConsul)})
// Wrap the connection
c := &Conn{
addr: addr,

View File

@ -74,5 +74,12 @@ func (l *RaftLayer) Addr() net.Addr {
// Dial is used to create a new outgoing connection
func (l *RaftLayer) Dial(address string, timeout time.Duration) (net.Conn, error) {
return net.DialTimeout("tcp", address, timeout)
conn, err := net.DialTimeout("tcp", address, timeout)
if err != nil {
return nil, err
}
// Write the Raft byte to set the mode
conn.Write([]byte{byte(rpcRaft)})
return conn, err
}