Extract duplicate b2s/s2b functions from proxy/utils.go into internal/utils/bytes.go. These are zero-allocation unsafe conversions for byte slice <-> string conversion. - Create utils.B2s() and utils.S2b() as unified implementations - Update proxy/utils.go to call utils functions - Add safety documentation about shared memory warning Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
33 lines
833 B
Go
33 lines
833 B
Go
package proxy
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"rua.plus/lolly/internal/utils"
|
|
)
|
|
|
|
// b2s converts byte slice to string without allocation.
|
|
// WARNING: The returned string shares memory with the original slice.
|
|
// Do not modify the slice after calling this function.
|
|
func b2s(b []byte) string {
|
|
return utils.B2s(b)
|
|
}
|
|
|
|
// s2b converts string to byte slice without allocation.
|
|
// WARNING: The returned slice shares memory with the original string.
|
|
// Do not modify the slice contents.
|
|
func s2b(s string) []byte {
|
|
return utils.S2b(s)
|
|
}
|
|
|
|
// isInWhitelist checks if a header key is in the whitelist.
|
|
// Uses bytes.EqualFold for case-insensitive comparison without allocation.
|
|
func isInWhitelist(key []byte, whitelist map[string]bool) bool {
|
|
for wKey := range whitelist {
|
|
if bytes.EqualFold(key, s2b(wKey)) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|