add kcp dialer

This commit is contained in:
ginuerzh
2021-12-16 19:03:56 +08:00
parent 5bd3c25c65
commit a52cd9a4c2
19 changed files with 395 additions and 78 deletions

View File

@ -32,8 +32,10 @@ func (c *Chain) GetRouteFor(network, address string) (r *Route) {
}
if node.transport.IsMultiplex() {
tr := node.transport.Copy().WithRoute(r)
node = node.Copy().WithTransport(tr)
tr := node.transport.Copy().
WithRoute(r)
node = node.Copy().
WithTransport(tr)
r = &Route{}
}

View File

@ -9,6 +9,7 @@ import (
)
type Transport struct {
addr string
route *Route
dialer dialer.Dialer
connector connector.Connector
@ -51,7 +52,8 @@ func (tr *Transport) dialOptions() []dialer.DialOption {
func (tr *Transport) Handshake(ctx context.Context, conn net.Conn) (net.Conn, error) {
var err error
if hs, ok := tr.dialer.(dialer.Handshaker); ok {
conn, err = hs.Handshake(ctx, conn)
conn, err = hs.Handshake(ctx, conn,
dialer.AddrHandshakeOption(tr.addr))
if err != nil {
return nil, err
}
@ -84,3 +86,8 @@ func (tr *Transport) WithRoute(r *Route) *Transport {
tr.route = r
return tr
}
func (tr *Transport) WithAddr(addr string) *Transport {
tr.addr = addr
return tr
}