|
@@ -67,17 +67,18 @@ func (handler *VMessOutboundHandler) Start(ray core.OutboundRay) error {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (handler *VMessOutboundHandler) startCommunicate(request *vmessio.VMessRequest, dest v2net.Address, ray core.OutboundRay) error {
|
|
func (handler *VMessOutboundHandler) startCommunicate(request *vmessio.VMessRequest, dest v2net.Address, ray core.OutboundRay) error {
|
|
|
|
|
+ input := ray.OutboundInput()
|
|
|
|
|
+ output := ray.OutboundOutput()
|
|
|
|
|
+
|
|
|
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{dest.IP, int(dest.Port), ""})
|
|
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{dest.IP, int(dest.Port), ""})
|
|
|
log.Debug("VMessOutbound dialing tcp: %s", dest.String())
|
|
log.Debug("VMessOutbound dialing tcp: %s", dest.String())
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
log.Error("Failed to open tcp (%s): %v", dest.String(), err)
|
|
log.Error("Failed to open tcp (%s): %v", dest.String(), err)
|
|
|
|
|
+ close(output)
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
defer conn.Close()
|
|
defer conn.Close()
|
|
|
|
|
|
|
|
- input := ray.OutboundInput()
|
|
|
|
|
- output := ray.OutboundOutput()
|
|
|
|
|
-
|
|
|
|
|
requestWriter := vmessio.NewVMessRequestWriter()
|
|
requestWriter := vmessio.NewVMessRequestWriter()
|
|
|
err = requestWriter.Write(conn, request)
|
|
err = requestWriter.Write(conn, request)
|
|
|
if err != nil {
|
|
if err != nil {
|