소스 검색

Finished ListenKCPhub

Shelikhoo 9 년 전
부모
커밋
35b30e5bb0
2개의 변경된 파일24개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 1
      transport/hub/kcp.go
  2. 23 1
      transport/hub/tcp.go

+ 1 - 1
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

+ 23 - 1
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)
 	}