1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-22 10:08:15 -05:00

fix kcp listener

This commit is contained in:
v2ray 2016-08-15 22:20:16 +02:00
parent a5a70afdb8
commit 0bca6e8657
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
2 changed files with 7 additions and 8 deletions

View File

@ -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,10 +33,6 @@ 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,
}
hub, err := udp.ListenUDP(address, port, udp.ListenOption{Callback: l.OnReceive})
@ -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 {

View File

@ -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()
}