fix(stream): update ToHeader function to accept pointer to header buffer and return copy

This commit is contained in:
yusing
2026-01-09 10:46:23 +08:00
parent b1f72dd4dd
commit b4559c30db
4 changed files with 6 additions and 5 deletions

View File

@@ -72,8 +72,9 @@ func NewStreamHealthCheckHeader() *StreamRequestHeader {
return header
}
func ToHeader(buf [headerSize]byte) *StreamRequestHeader {
return (*StreamRequestHeader)(unsafe.Pointer(&buf[0]))
// ToHeader converts header byte array to a copy of itself as a StreamRequestHeader.
func ToHeader(buf *[headerSize]byte) StreamRequestHeader {
return *(*StreamRequestHeader)(unsafe.Pointer(buf))
}
func (h *StreamRequestHeader) GetHostPort() (string, string) {

View File

@@ -15,7 +15,7 @@ func TestStreamRequestHeader_RoundTripAndChecksum(t *testing.T) {
var buf [headerSize]byte
copy(buf[:], h.Bytes())
h2 := ToHeader(buf)
h2 := ToHeader(&buf)
if !h2.Validate() {
t.Fatalf("expected round-tripped header to validate")
}

View File

@@ -151,7 +151,7 @@ func (s *TCPServer) redirect(conn net.Conn) (net.Conn, error) {
return nil, err
}
header := ToHeader(headerBuf)
header := ToHeader(&headerBuf)
if !header.Validate() {
return nil, ErrInvalidHeader
}

View File

@@ -106,7 +106,7 @@ func (s *UDPServer) handleDTLSConnection(clientConn net.Conn) {
s.logger(clientConn).Err(err).Msg("failed to read stream header")
return
}
header := ToHeader(headerBuf)
header := ToHeader(&headerBuf)
if !header.Validate() {
s.logger(clientConn).Error().Bytes("header", headerBuf[:]).Msg("invalid stream header received")
return