forked from quic-go/quic-go
take packet rcv timestamp directly after receiving from network
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"net"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/lucas-clemente/quic-go/crypto"
|
||||
"github.com/lucas-clemente/quic-go/handshake"
|
||||
@@ -130,6 +131,8 @@ func (s *Server) handlePacket(conn *net.UDPConn, remoteAddr *net.UDPAddr, packet
|
||||
return qerr.PacketTooLarge
|
||||
}
|
||||
|
||||
rcvTime := time.Now()
|
||||
|
||||
r := bytes.NewReader(packet)
|
||||
|
||||
hdr, err := ParsePublicHeader(r)
|
||||
@@ -175,6 +178,7 @@ func (s *Server) handlePacket(conn *net.UDPConn, remoteAddr *net.UDPAddr, packet
|
||||
remoteAddr: remoteAddr,
|
||||
publicHeader: hdr,
|
||||
data: packet[len(packet)-r.Len():],
|
||||
rcvTime: rcvTime,
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
10
session.go
10
session.go
@@ -25,6 +25,7 @@ type receivedPacket struct {
|
||||
remoteAddr interface{}
|
||||
publicHeader *PublicHeader
|
||||
data []byte
|
||||
rcvTime time.Time
|
||||
}
|
||||
|
||||
var (
|
||||
@@ -179,7 +180,7 @@ func (s *Session) run() {
|
||||
// begins with the public header and we never copy it.
|
||||
putPacketBuffer(p.publicHeader.Raw)
|
||||
if s.delayedAckOriginTime.IsZero() {
|
||||
s.delayedAckOriginTime = time.Now()
|
||||
s.delayedAckOriginTime = p.rcvTime
|
||||
}
|
||||
case <-s.aeadChanged:
|
||||
s.tryDecryptingQueuedPackets()
|
||||
@@ -226,7 +227,12 @@ func (s *Session) maybeResetTimer() {
|
||||
}
|
||||
|
||||
func (s *Session) handlePacketImpl(p *receivedPacket) error {
|
||||
s.lastNetworkActivityTime = time.Now()
|
||||
if p.rcvTime.IsZero() {
|
||||
// To simplify testing
|
||||
p.rcvTime = time.Now()
|
||||
}
|
||||
|
||||
s.lastNetworkActivityTime = p.rcvTime
|
||||
hdr := p.publicHeader
|
||||
data := p.data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user