Fix: udp traffic track (#608)

This commit is contained in:
gVisor bot 2020-03-28 20:05:38 +08:00
parent f50a8dbe00
commit 5bb81b70d6
2 changed files with 8 additions and 2 deletions

View file

@ -85,7 +85,6 @@ func handleUDPToRemote(packet C.UDPPacket, pc C.PacketConn, metadata *C.Metadata
if _, err := pc.WriteWithMetadata(packet.Data(), metadata); err != nil { if _, err := pc.WriteWithMetadata(packet.Data(), metadata); err != nil {
return return
} }
DefaultManager.Upload() <- int64(len(packet.Data()))
} }
func handleUDPToLocal(packet C.UDPPacket, pc net.PacketConn, key string, fAddr net.Addr) { func handleUDPToLocal(packet C.UDPPacket, pc net.PacketConn, key string, fAddr net.Addr) {
@ -109,7 +108,6 @@ func handleUDPToLocal(packet C.UDPPacket, pc net.PacketConn, key string, fAddr n
if err != nil { if err != nil {
return return
} }
DefaultManager.Download() <- int64(n)
} }
} }

View file

@ -103,6 +103,14 @@ func (ut *udpTracker) WriteTo(b []byte, addr net.Addr) (int, error) {
return n, err return n, err
} }
func (ut *udpTracker) WriteWithMetadata(p []byte, metadata *C.Metadata) (int, error) {
n, err := ut.PacketConn.WriteWithMetadata(p, metadata)
upload := int64(n)
ut.manager.Upload() <- upload
ut.UploadTotal += upload
return n, err
}
func (ut *udpTracker) Close() error { func (ut *udpTracker) Close() error {
ut.manager.Leave(ut) ut.manager.Leave(ut)
return ut.PacketConn.Close() return ut.PacketConn.Close()