get rid of annoying firewall warnings

This commit is contained in:
v2ray
2016-05-29 16:37:52 +02:00
parent c3aa839227
commit b47c1ca609
34 changed files with 110 additions and 51 deletions

View File

@@ -26,6 +26,7 @@ type DokodemoDoor struct {
udpHub *hub.UDPHub
udpServer *hub.UDPServer
listeningPort v2net.Port
listeningAddress v2net.Address
}
func NewDokodemoDoor(config *Config, space app.Space) *DokodemoDoor {
@@ -65,25 +66,26 @@ func (this *DokodemoDoor) Close() {
}
}
func (this *DokodemoDoor) Listen(port v2net.Port) error {
func (this *DokodemoDoor) Listen(address v2net.Address, port v2net.Port) error {
if this.accepting {
if this.listeningPort == port {
if this.listeningPort == port && this.listeningAddress.Equals(address) {
return nil
} else {
return proxy.ErrorAlreadyListening
}
}
this.listeningPort = port
this.listeningAddress = address
this.accepting = true
if this.config.Network.HasNetwork(v2net.TCPNetwork) {
err := this.ListenTCP(port)
err := this.ListenTCP(address, port)
if err != nil {
return err
}
}
if this.config.Network.HasNetwork(v2net.UDPNetwork) {
err := this.ListenUDP(port)
err := this.ListenUDP(address, port)
if err != nil {
return err
}
@@ -91,9 +93,9 @@ func (this *DokodemoDoor) Listen(port v2net.Port) error {
return nil
}
func (this *DokodemoDoor) ListenUDP(port v2net.Port) error {
func (this *DokodemoDoor) ListenUDP(address v2net.Address, port v2net.Port) error {
this.udpServer = hub.NewUDPServer(this.packetDispatcher)
udpHub, err := hub.ListenUDP(port, this.handleUDPPackets)
udpHub, err := hub.ListenUDP(address, port, this.handleUDPPackets)
if err != nil {
log.Error("Dokodemo failed to listen on port ", port, ": ", err)
return err
@@ -118,8 +120,8 @@ func (this *DokodemoDoor) handleUDPResponse(dest v2net.Destination, payload *all
this.udpHub.WriteTo(payload.Value, dest)
}
func (this *DokodemoDoor) ListenTCP(port v2net.Port) error {
tcpListener, err := hub.ListenTCP(port, this.HandleTCPConnection, nil)
func (this *DokodemoDoor) ListenTCP(address v2net.Address, port v2net.Port) error {
tcpListener, err := hub.ListenTCP(address, port, this.HandleTCPConnection, nil)
if err != nil {
log.Error("Dokodemo: Failed to listen on port ", port, ": ", err)
return err