clarify peek() code
This commit is contained in:
parent
3e8d967595
commit
a37d9a5198
13
server.go
13
server.go
|
@ -129,21 +129,24 @@ _____________________
|
||||||
=> https://tildegit.org/nervuri/client-hello-mirror Source (contributions welcome)
|
=> 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`
|
=> 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) {
|
func peek(conn net.Conn, tlsConfig *tls.Config) {
|
||||||
// Copy the Client Hello before starting the TLS handshake.
|
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
var buf bytes.Buffer
|
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 {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// Check if this is a TLS handshake record.
|
||||||
if buf.Bytes()[0] != 0x16 {
|
if buf.Bytes()[0] != 0x16 {
|
||||||
// Not a Client Hello message.
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
length := binary.BigEndian.Uint16(buf.Bytes()[3:5])
|
// Extract handshake message length.
|
||||||
_, err = io.CopyN(&buf, conn, int64(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 {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue