| 115 | } |
| 116 | |
| 117 | func (c *PostHandshakeRecordDetectConn) Read(b []byte) (n int, err error) { |
| 118 | if !c.CcsSent { |
| 119 | return c.Conn.Read(b) |
| 120 | } |
| 121 | c.Conn.SetReadDeadline(time.Now().Add(5 * time.Second)) |
| 122 | data, _ := io.ReadAll(c.Conn) |
| 123 | var postHandshakeRecordsLens []int |
| 124 | for { |
| 125 | if len(data) >= 5 && bytes.Equal(data[:3], []byte{23, 3, 3}) { |
| 126 | length := int(binary.BigEndian.Uint16(data[3:5])) + 5 |
| 127 | postHandshakeRecordsLens = append(postHandshakeRecordsLens, length) |
| 128 | data = data[length:] |
| 129 | } else { |
| 130 | break |
| 131 | } |
| 132 | } |
| 133 | GlobalPostHandshakeRecordsLens.Store(c.Key, postHandshakeRecordsLens) |
| 134 | return 0, io.EOF |
| 135 | } |
| 136 | |
| 137 | var CCSMsg = []byte{0x14, 0x3, 0x3, 0x0, 0x1, 0x1} |
| 138 | |