1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-21 09:36:34 -05:00

check if address is set

This commit is contained in:
v2ray 2016-06-12 22:54:33 +02:00
parent 679d646571
commit 8a5f37dad7
2 changed files with 12 additions and 2 deletions

View File

@ -22,7 +22,9 @@ func (this *Config) UnmarshalJSON(data []byte) error {
if err := json.Unmarshal(data, rawConfig); err != nil {
return errors.New("Dokodemo: Failed to parse config: " + err.Error())
}
this.Address = rawConfig.Host.Address
if rawConfig.Host != nil {
this.Address = rawConfig.Host.Address
}
this.Port = rawConfig.PortValue
this.Network = rawConfig.NetworkList
this.Timeout = rawConfig.TimeoutValue

View File

@ -129,7 +129,7 @@ func (this *DokodemoDoor) ListenTCP() error {
func (this *DokodemoDoor) HandleTCPConnection(conn *hub.Connection) {
defer conn.Close()
dest := v2net.TCPDestination(this.address, this.port)
var dest v2net.Destination
if this.config.FollowRedirect {
originalDest := GetOriginalDestination(conn)
if originalDest != nil {
@ -137,6 +137,14 @@ func (this *DokodemoDoor) HandleTCPConnection(conn *hub.Connection) {
dest = originalDest
}
}
if dest == nil && this.address != nil && this.port > v2net.Port(0) {
dest = v2net.TCPDestination(this.address, this.port)
}
if dest == nil {
log.Info("Dokodemo: Unknown destination, stop forwarding...")
return
}
ray := this.packetDispatcher.DispatchToOutbound(dest)
defer ray.InboundOutput().Release()