From a37d9a519828dc27c54a01dd4271715a887192c7 Mon Sep 17 00:00:00 2001 From: nervuri Date: Sun, 12 Jun 2022 00:00:00 +0000 Subject: [PATCH] clarify peek() code --- server.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/server.go b/server.go index c6234c1..0714515 100644 --- a/server.go +++ b/server.go @@ -129,21 +129,24 @@ _____________________ => https://tildegit.org/nervuri/client-hello-mirror Source (contributions welcome) => https://www.gnu.org/licenses/agpl-3.0.en.html License: AGPL-3.0-or-later` +// Copy the Client Hello message before starting the TLS handshake. func peek(conn net.Conn, tlsConfig *tls.Config) { - // Copy the Client Hello before starting the TLS handshake. defer conn.Close() var buf bytes.Buffer - _, err := io.CopyN(&buf, conn, 5) // TLS record header + // Copy TLS record header. + _, err := io.CopyN(&buf, conn, 5) if err != nil { log.Println(err) return } + // Check if this is a TLS handshake record. if buf.Bytes()[0] != 0x16 { - // Not a Client Hello message. return } - length := binary.BigEndian.Uint16(buf.Bytes()[3:5]) - _, err = io.CopyN(&buf, conn, int64(length)) + // Extract handshake message length. + handshakeMessageLength := binary.BigEndian.Uint16(buf.Bytes()[3:5]) + // Copy handshake message (should be a Client Hello). + _, err = io.CopyN(&buf, conn, int64(handshakeMessageLength)) if err != nil { log.Println(err) return