|  | @@ -26,7 +26,33 @@ func (uih *UnixInboundHandler) Start() {
 | 
											
												
													
														|  |  	if err != nil {
 |  |  	if err != nil {
 | 
											
												
													
														|  |  		newError(err).AtError().WriteToLog()
 |  |  		newError(err).AtError().WriteToLog()
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +	err = uih.listenerHolder.LowerUP()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		newError(err).AtError().WriteToLog()
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	nchan := make(chan net.Conn, 2)
 | 
											
												
													
														|  | 
 |  | +	err = uih.listenerHolder.UP(nchan, false)
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		newError(err).AtError().WriteToLog()
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	go uih.progressTraffic(nchan)
 | 
											
												
													
														|  | 
 |  | +	return
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +func (uih *UnixInboundHandler) progressTraffic(rece <-chan net.Conn) {
 | 
											
												
													
														|  | 
 |  | +	for {
 | 
											
												
													
														|  | 
 |  | +		conn := <-rece
 | 
											
												
													
														|  | 
 |  | +		go func(conn net.Conn) {
 | 
											
												
													
														|  | 
 |  | +			ctx, cancel := context.WithCancel(uih.ctx)
 | 
											
												
													
														|  | 
 |  | +			if len(uih.tag) > 0 {
 | 
											
												
													
														|  | 
 |  | +				ctx = proxy.ContextWithInboundTag(ctx, uih.tag)
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			if err := uih.proxy.Process(ctx, net.Network_TCP, conn, uih.mux); err != nil {
 | 
											
												
													
														|  | 
 |  | +				newError("connection ends").Base(err).WriteToLog()
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			cancel()
 | 
											
												
													
														|  | 
 |  | +			conn.Close()
 | 
											
												
													
														|  | 
 |  | +		}(conn)
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  func (uih *UnixInboundHandler) Close() {
 |  |  func (uih *UnixInboundHandler) Close() {
 | 
											
												
													
														|  |  	if uih.listenerHolder != nil {
 |  |  	if uih.listenerHolder != nil {
 |