diff --git a/cgi.go b/cgi.go index 65229b2a54..bd6dad4938 100644 --- a/cgi.go +++ b/cgi.go @@ -27,20 +27,6 @@ import ( "github.com/dunglas/frankenphp/internal/phpheaders" ) -// cStringHTTPMethods caches C string versions of common HTTP methods -// to avoid allocations in pinCString on every request. -var cStringHTTPMethods = map[string]*C.char{ - "GET": C.CString("GET"), - "HEAD": C.CString("HEAD"), - "POST": C.CString("POST"), - "PUT": C.CString("PUT"), - "DELETE": C.CString("DELETE"), - "CONNECT": C.CString("CONNECT"), - "OPTIONS": C.CString("OPTIONS"), - "TRACE": C.CString("TRACE"), - "PATCH": C.CString("PATCH"), -} - // computeKnownVariables returns a set of CGI environment variables for the request. // // TODO: handle this case https://github.com/caddyserver/caddy/issues/3718 diff --git a/cgimethods.go b/cgimethods.go new file mode 100644 index 0000000000..8b4a53760f --- /dev/null +++ b/cgimethods.go @@ -0,0 +1,27 @@ +package frankenphp + +// const char *frankenphp_method_get = "GET"; +// const char *frankenphp_method_head = "HEAD"; +// const char *frankenphp_method_post = "POST"; +// const char *frankenphp_method_put = "PUT"; +// const char *frankenphp_method_delete = "DELETE"; +// const char *frankenphp_method_connect = "CONNECT"; +// const char *frankenphp_method_options = "OPTIONS"; +// const char *frankenphp_method_trace = "TRACE"; +// const char *frankenphp_method_patch = "PATCH"; +import "C" + +// cStringHTTPMethods maps common HTTP methods to static C strings, avoiding a +// pinCString call per request. C literals, unlike C.CString, aren't reported as +// leaks by LeakSanitizer, which can't see pointers held in Go memory. +var cStringHTTPMethods = map[string]*C.char{ + "GET": C.frankenphp_method_get, + "HEAD": C.frankenphp_method_head, + "POST": C.frankenphp_method_post, + "PUT": C.frankenphp_method_put, + "DELETE": C.frankenphp_method_delete, + "CONNECT": C.frankenphp_method_connect, + "OPTIONS": C.frankenphp_method_options, + "TRACE": C.frankenphp_method_trace, + "PATCH": C.frankenphp_method_patch, +}