From: Sergey Matveev Date: Mon, 14 Sep 2015 09:16:04 +0000 (+0300) Subject: Simple optimization for TCP buffer check X-Git-Tag: 4.0^2~10 X-Git-Url: http://www.git.cypherpunks.ru/?p=govpn.git;a=commitdiff_plain;h=d20ad6088e1b9a90cebef28901ed3ece9f970f15 Simple optimization for TCP buffer check Signed-off-by: Sergey Matveev --- 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 {