|
|
@@ -2,9 +2,9 @@ package tls
|
|
|
|
|
|
import (
|
|
|
"crypto/tls"
|
|
|
- "net"
|
|
|
|
|
|
"v2ray.com/core/common/buf"
|
|
|
+ "v2ray.com/core/common/net"
|
|
|
)
|
|
|
|
|
|
//go:generate go run $GOPATH/src/v2ray.com/core/common/errors/errorgen/main.go -pkg tls -path Transport,Internet,TLS
|
|
|
@@ -14,7 +14,7 @@ var (
|
|
|
)
|
|
|
|
|
|
type conn struct {
|
|
|
- net.Conn
|
|
|
+ *tls.Conn
|
|
|
|
|
|
mergingWriter *buf.BufferedWriter
|
|
|
}
|
|
|
@@ -29,6 +29,17 @@ func (c *conn) WriteMultiBuffer(mb buf.MultiBuffer) error {
|
|
|
return c.mergingWriter.Flush()
|
|
|
}
|
|
|
|
|
|
+func (c *conn) HandshakeAddress() net.Address {
|
|
|
+ if err := c.Handshake(); err != nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ state := c.Conn.ConnectionState()
|
|
|
+ if len(state.ServerName) == 0 {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return net.ParseAddress(state.ServerName)
|
|
|
+}
|
|
|
+
|
|
|
// Client initiates a TLS client handshake on the given connection.
|
|
|
func Client(c net.Conn, config *tls.Config) net.Conn {
|
|
|
tlsConn := tls.Client(c, config)
|