Skip to content

Commit 3394205

Browse files
committed
Fix request_uri timing
1 parent 3da980f commit 3394205

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

crates/php/src/embed.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,13 @@ impl Handler for Embed {
186186
fn handle(&self, request: Request) -> Result<Response, Self::Error> {
187187
let docroot = self.docroot.clone();
188188

189+
// Initialize the SAPI module
190+
self.sapi.startup()?;
191+
192+
// Get REQUEST_URI _first_ as it needs the pre-rewrite state.
193+
let url = request.url();
194+
let request_uri = url.path();
195+
189196
// Apply request rewriting rules
190197
let mut request = request.clone();
191198
if let Some(rewriter) = &self.rewriter {
@@ -194,19 +201,15 @@ impl Handler for Embed {
194201
.map_err(EmbedRequestError::RequestRewriteError)?;
195202
}
196203

197-
// Initialize the SAPI module
198-
self.sapi.startup()?;
204+
let translated_path = translate_path(&docroot, request.url().path())?
205+
.display()
206+
.to_string();
199207

200-
let url = request.url();
201-
202-
// Get original request URI and translate to final path
203-
// TODO: Should do this with request rewriting later...
204-
let request_uri = url.path();
205-
let translated_path = translate_path(&docroot, request_uri)?.display().to_string();
206-
let path_translated = cstr(translated_path.clone())
207-
.map_err(|_| EmbedRequestError::FailedToSetRequestInfo("path_translated".into()))?;
208+
// Convert REQUEST_URI and PATH_TRANSLATED to C strings
208209
let request_uri = cstr(request_uri)
209210
.map_err(|_| EmbedRequestError::FailedToSetRequestInfo("request_uri".into()))?;
211+
let path_translated = cstr(translated_path.clone())
212+
.map_err(|_| EmbedRequestError::FailedToSetRequestInfo("path_translated".into()))?;
210213

211214
// Extract request method, query string, and headers
212215
let request_method = cstr(request.method())

0 commit comments

Comments
 (0)