mirror of
https://github.com/v2fly/v2ray-core.git
synced 2024-12-22 01:57:12 -05:00
fix kcp listener
This commit is contained in:
parent
a5a70afdb8
commit
0bca6e8657
@ -22,7 +22,6 @@ type Listener struct {
|
||||
sessions map[string]*Connection
|
||||
awaitingConns chan *Connection
|
||||
hub *udp.UDPHub
|
||||
localAddr *net.UDPAddr
|
||||
}
|
||||
|
||||
func NewListener(address v2net.Address, port v2net.Port) (*Listener, error) {
|
||||
@ -34,11 +33,7 @@ func NewListener(address v2net.Address, port v2net.Port) (*Listener, error) {
|
||||
authenticator: auth,
|
||||
sessions: make(map[string]*Connection),
|
||||
awaitingConns: make(chan *Connection, 64),
|
||||
localAddr: &net.UDPAddr{
|
||||
IP: address.IP(),
|
||||
Port: int(port),
|
||||
},
|
||||
running: true,
|
||||
running: true,
|
||||
}
|
||||
hub, err := udp.ListenUDP(address, port, udp.ListenOption{Callback: l.OnReceive})
|
||||
if err != nil {
|
||||
@ -92,7 +87,7 @@ func (this *Listener) OnReceive(payload *alloc.Buffer, session *proxy.SessionInf
|
||||
if err != nil {
|
||||
log.Error("KCP|Listener: Failed to create authenticator: ", err)
|
||||
}
|
||||
conn = NewConnection(conv, writer, this.localAddr, srcAddr, auth)
|
||||
conn = NewConnection(conv, writer, this.Addr().(*net.UDPAddr), srcAddr, auth)
|
||||
select {
|
||||
case this.awaitingConns <- conn:
|
||||
case <-time.After(time.Second * 5):
|
||||
@ -159,7 +154,7 @@ func (this *Listener) ActiveConnections() int {
|
||||
|
||||
// Addr returns the listener's network address, The Addr returned is shared by all invocations of Addr, so do not modify it.
|
||||
func (this *Listener) Addr() net.Addr {
|
||||
return this.localAddr
|
||||
return this.hub.Addr()
|
||||
}
|
||||
|
||||
type Writer struct {
|
||||
|
@ -104,3 +104,7 @@ func (this *UDPHub) Running() bool {
|
||||
func (this *UDPHub) Connection() net.Conn {
|
||||
return this.conn
|
||||
}
|
||||
|
||||
func (this *UDPHub) Addr() net.Addr {
|
||||
return this.conn.LocalAddr()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user