From d20ad6088e1b9a90cebef28901ed3ece9f970f15 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Mon, 14 Sep 2015 12:16:04 +0300 Subject: [PATCH] Simple optimization for TCP buffer check Signed-off-by: Sergey Matveev --- src/govpn/cmd/govpn-client/tcp.go | 3 +++ src/govpn/cmd/govpn-server/tcp.go | 3 +++ src/govpn/peer.go | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/govpn/cmd/govpn-client/tcp.go b/src/govpn/cmd/govpn-client/tcp.go index 49d3ae9..511955c 100644 --- a/src/govpn/cmd/govpn-client/tcp.go +++ b/src/govpn/cmd/govpn-client/tcp.go @@ -136,6 +136,9 @@ TransportCycle: } prev += n CheckMore: + if prev < govpn.MinPktLength { + continue + } i = bytes.Index(buf[:prev], nonceExpectation) if i == -1 { continue diff --git a/src/govpn/cmd/govpn-server/tcp.go b/src/govpn/cmd/govpn-server/tcp.go index 8aedfa9..d8deaa1 100644 --- a/src/govpn/cmd/govpn-server/tcp.go +++ b/src/govpn/cmd/govpn-server/tcp.go @@ -170,6 +170,9 @@ func handleTCP(conn net.Conn) { } prev += n CheckMore: + if prev < govpn.MinPktLength { + continue + } i = bytes.Index(buf[:prev], nonceExpectation) if i == -1 { continue diff --git a/src/govpn/peer.go b/src/govpn/peer.go index f5f917a..e666b47 100644 --- a/src/govpn/peer.go +++ b/src/govpn/peer.go @@ -24,6 +24,8 @@ const ( PktSizeSize = 2 // Heartbeat rate, relative to Timeout TimeoutHeartbeat = 4 + // Minimal valid packet length: 2+ + MinPktLength = 2 + 16 + 8 ) func newNonceCipher(key *[32]byte) *xtea.Cipher { -- 2.44.0