Fix: vmess udp crash
This commit is contained in:
@ -81,8 +81,8 @@ func handleHTTP(request *adapters.HTTPAdapter, outbound net.Conn) {
|
||||
}
|
||||
}
|
||||
|
||||
func handleUDPToRemote(packet C.UDPPacket, pc net.PacketConn, addr net.Addr) {
|
||||
if _, err := pc.WriteTo(packet.Data(), addr); err != nil {
|
||||
func handleUDPToRemote(packet C.UDPPacket, pc C.PacketConn, metadata *C.Metadata) {
|
||||
if _, err := pc.WriteWithMetadata(packet.Data(), metadata); err != nil {
|
||||
return
|
||||
}
|
||||
DefaultManager.Upload() <- int64(len(packet.Data()))
|
||||
|
@ -190,16 +190,7 @@ func handleUDPConn(packet *inbound.PacketAdapter) {
|
||||
key := packet.LocalAddr().String()
|
||||
pc := natTable.Get(key)
|
||||
if pc != nil {
|
||||
if !metadata.Resolved() {
|
||||
ip, err := resolver.ResolveIP(metadata.Host)
|
||||
if err != nil {
|
||||
log.Warnln("[UDP] Resolve %s failed: %s, %#v", metadata.Host, err.Error(), metadata)
|
||||
return
|
||||
}
|
||||
metadata.DstIP = ip
|
||||
}
|
||||
|
||||
handleUDPToRemote(packet, pc, metadata.UDPAddr())
|
||||
handleUDPToRemote(packet, pc, metadata)
|
||||
return
|
||||
}
|
||||
|
||||
@ -246,14 +237,7 @@ func handleUDPConn(packet *inbound.PacketAdapter) {
|
||||
wg.Wait()
|
||||
pc := natTable.Get(key)
|
||||
if pc != nil {
|
||||
if !metadata.Resolved() {
|
||||
ip, err := resolver.ResolveIP(metadata.Host)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
metadata.DstIP = ip
|
||||
}
|
||||
handleUDPToRemote(packet, pc, metadata.UDPAddr())
|
||||
handleUDPToRemote(packet, pc, metadata)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
Reference in New Issue
Block a user