Jelajahi Sumber

fix nil address in inbound proxyman

Darien Raymond 8 tahun lalu
induk
melakukan
c5ecdc8078
2 mengubah file dengan 13 tambahan dan 5 penghapusan
  1. 7 3
      app/proxyman/inbound/always.go
  2. 6 2
      app/proxyman/inbound/dynamic.go

+ 7 - 3
app/proxyman/inbound/always.go

@@ -27,11 +27,15 @@ func NewAlwaysOnInboundHandler(ctx context.Context, tag string, receiverConfig *
 
 	nl := p.Network()
 	pr := receiverConfig.PortRange
+	address := receiverConfig.Listen.AsAddress()
+	if address == nil {
+		address = net.AnyIP
+	}
 	for port := pr.From; port <= pr.To; port++ {
 		if nl.HasNetwork(net.Network_TCP) {
-			log.Debug("Proxyman|DefaultInboundHandler: creating tcp worker on ", receiverConfig.Listen.AsAddress(), ":", port)
+			log.Debug("Proxyman|DefaultInboundHandler: creating tcp worker on ", address, ":", port)
 			worker := &tcpWorker{
-				address:          receiverConfig.Listen.AsAddress(),
+				address:          address,
 				port:             net.Port(port),
 				proxy:            p,
 				stream:           receiverConfig.StreamSettings,
@@ -46,7 +50,7 @@ func NewAlwaysOnInboundHandler(ctx context.Context, tag string, receiverConfig *
 			worker := &udpWorker{
 				tag:          tag,
 				proxy:        p,
-				address:      receiverConfig.Listen.AsAddress(),
+				address:      address,
 				port:         net.Port(port),
 				recvOrigDest: receiverConfig.ReceiveOriginalDestination,
 			}

+ 6 - 2
app/proxyman/inbound/dynamic.go

@@ -73,6 +73,10 @@ func (h *DynamicInboundHandler) refresh() error {
 
 	h.worker2Recycle, h.worker = h.worker, h.worker2Recycle[:0]
 
+	address := h.receiverConfig.Listen.AsAddress()
+	if address == nil {
+		address = v2net.AnyIP
+	}
 	for i := uint32(0); i < h.receiverConfig.AllocationStrategy.GetConcurrencyValue(); i++ {
 		port := h.allocatePort()
 		p, err := proxy.CreateInboundHandler(h.ctx, h.proxyConfig)
@@ -84,7 +88,7 @@ func (h *DynamicInboundHandler) refresh() error {
 		if nl.HasNetwork(v2net.Network_TCP) {
 			worker := &tcpWorker{
 				tag:              h.tag,
-				address:          h.receiverConfig.Listen.AsAddress(),
+				address:          address,
 				port:             port,
 				proxy:            p,
 				stream:           h.receiverConfig.StreamSettings,
@@ -101,7 +105,7 @@ func (h *DynamicInboundHandler) refresh() error {
 			worker := &udpWorker{
 				tag:          h.tag,
 				proxy:        p,
-				address:      h.receiverConfig.Listen.AsAddress(),
+				address:      address,
 				port:         port,
 				recvOrigDest: h.receiverConfig.ReceiveOriginalDestination,
 			}