mirror of
https://github.com/daeuniverse/dae.git
synced 2025-03-10 04:47:25 +07:00
optimize(sniffer): wait data for 300ms instead of 100ms
This commit is contained in:
parent
08f75bef44
commit
e61ac598b5
@ -11,6 +11,10 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
DataWaitingTimeout = 300 * time.Millisecond
|
||||
)
|
||||
|
||||
type Sniffer struct {
|
||||
// Stream
|
||||
stream bool
|
||||
@ -70,14 +74,14 @@ func (s *Sniffer) SniffTcp() (d string, err error) {
|
||||
close(s.dataReady)
|
||||
}()
|
||||
|
||||
// Waiting 100ms for data.
|
||||
// Waiting 300ms for data.
|
||||
select {
|
||||
case <-time.After(100 * time.Millisecond):
|
||||
return "", NotApplicableError
|
||||
case <-s.dataReady:
|
||||
if s.dataError != nil {
|
||||
return "", s.dataError
|
||||
}
|
||||
case <-time.After(DataWaitingTimeout):
|
||||
return "", NotApplicableError
|
||||
}
|
||||
} else {
|
||||
close(s.dataReady)
|
||||
@ -112,14 +116,19 @@ func (s *Sniffer) SniffUdp() (d string, err error) {
|
||||
|
||||
func (s *Sniffer) Read(p []byte) (n int, err error) {
|
||||
<-s.dataReady
|
||||
if s.dataError != nil {
|
||||
return 0, s.dataError
|
||||
}
|
||||
|
||||
s.readMu.Lock()
|
||||
defer s.readMu.Unlock()
|
||||
|
||||
if s.buf != nil && s.bufAt < len(s.buf) {
|
||||
if s.dataError != nil {
|
||||
if s.bufAt < len(s.buf) {
|
||||
n = copy(p, s.buf[s.bufAt:])
|
||||
s.bufAt += n
|
||||
}
|
||||
return n, s.dataError
|
||||
}
|
||||
|
||||
if s.bufAt < len(s.buf) {
|
||||
// Read buf first.
|
||||
n = copy(p, s.buf[s.bufAt:])
|
||||
s.bufAt += n
|
||||
|
@ -30,12 +30,12 @@ func (c *ControlPlane) handleConn(lConn net.Conn) (err error) {
|
||||
|
||||
// Sniff target domain.
|
||||
sniffer := sniffing.NewConnSniffer(lConn, TcpSniffBufSize)
|
||||
// ConnSniffer should be used later, so we cannot close it now.
|
||||
defer sniffer.Close()
|
||||
domain, err := sniffer.SniffTcp()
|
||||
if err != nil && !sniffing.IsSniffingError(err) {
|
||||
return err
|
||||
}
|
||||
// ConnSniffer should be used later, so we cannot close it now.
|
||||
defer sniffer.Close()
|
||||
|
||||
// Get tuples and outbound.
|
||||
src := lConn.RemoteAddr().(*net.TCPAddr).AddrPort()
|
||||
|
@ -129,12 +129,11 @@ func (c *ControlPlane) handlePkt(lConn *net.UDPConn, data []byte, src, pktDst, r
|
||||
if !isDns {
|
||||
// Sniff Quic, ...
|
||||
sniffer := sniffing.NewPacketSniffer(data)
|
||||
defer sniffer.Close()
|
||||
domain, err = sniffer.SniffUdp()
|
||||
if err != nil && !sniffing.IsSniffingError(err) {
|
||||
sniffer.Close()
|
||||
return err
|
||||
}
|
||||
sniffer.Close()
|
||||
}
|
||||
|
||||
// Get outbound.
|
||||
|
Loading…
Reference in New Issue
Block a user