From 35b30e5bb0c5161b1db15f496080618f94895b5b Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sun, 12 Jun 2016 13:22:09 +0800 Subject: [PATCH] Finished ListenKCPhub --- transport/hub/kcp.go | 2 +- transport/hub/tcp.go | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/transport/hub/kcp.go b/transport/hub/kcp.go index fa0aaf479..eb62da3ee 100644 --- a/transport/hub/kcp.go +++ b/transport/hub/kcp.go @@ -17,7 +17,7 @@ type KCPVlistener struct { conf *kcpv.Config } -func (kvl *KCPVlistener) Accept() (*KCPVconn, error) { +func (kvl *KCPVlistener) Accept() (net.Conn, error) { conn, err := kvl.lst.Accept() if err != nil { return nil, err diff --git a/transport/hub/tcp.go b/transport/hub/tcp.go index c3e89120e..b230d6552 100644 --- a/transport/hub/tcp.go +++ b/transport/hub/tcp.go @@ -49,9 +49,31 @@ func ListenTCP(address v2net.Address, port v2net.Port, callback ConnectionHandle go hub.start() return hub, nil } +func ListenKCPhub(address v2net.Address, port v2net.Port, callback ConnectionHandler, tlsConfig *tls.Config) (*TCPHub, error) { + listener, err := ListenKCP(address, port) + if err != nil { + return nil, err + } + var hub *TCPHub + if tlsConfig != nil { + tlsListener := tls.NewListener(listener, tlsConfig) + hub = &TCPHub{ + listener: tlsListener, + connCallback: callback, + } + } else { + hub = &TCPHub{ + listener: listener, + connCallback: callback, + } + } + + go hub.start() + return hub, nil +} func ListenTCP6(address v2net.Address, port v2net.Port, callback ConnectionHandler, proxyMeta proxy.InboundHandlerMeta, tlsConfig *tls.Config) (*TCPHub, error) { if proxyMeta.KcpSupported && transport.IsKcpEnabled() { - return nil, errors.New("ListenTCP6: Not Implemented") + return ListenKCPhub(address, port, callback, tlsConfig) } else { return ListenTCP(address, port, callback, tlsConfig) }