From f60c945da324c82eb0d4c10ffa5ba9e48bbe6141 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Mon, 7 Dec 2020 21:31:56 +0200 Subject: Set REQUEST_URL in the MIME hook environment This time without a race. IssueID #90 --- lib/the_Foundation | 2 +- src/app.c | 4 ++-- src/gmrequest.c | 4 ++-- src/mimehooks.c | 14 +++++++++++--- src/mimehooks.h | 2 +- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/lib/the_Foundation b/lib/the_Foundation index bf0965ae..4514a181 160000 --- a/lib/the_Foundation +++ b/lib/the_Foundation @@ -1 +1 @@ -Subproject commit bf0965aeabbf8f7121f86b9ca96d5adff0114b7a +Subproject commit 4514a181458dfa02d73aafd6498e101b63eaa476 diff --git a/src/app.c b/src/app.c index da6a343f..8a6b2a66 100644 --- a/src/app.c +++ b/src/app.c @@ -550,7 +550,7 @@ void processEvents_App(enum iAppEventMode eventMode) { if (ev.type == SDL_USEREVENT && ev.user.code == asleep_UserEventCode) { if (SDL_GetTicks() - d->lastEventTime > idleThreshold_App_) { if (!d->isIdling) { - printf("[App] idling...\n"); +// printf("[App] idling...\n"); fflush(stdout); } d->isIdling = iTrue; @@ -559,7 +559,7 @@ void processEvents_App(enum iAppEventMode eventMode) { } d->lastEventTime = SDL_GetTicks(); if (d->isIdling) { - printf("[App] ...woke up\n"); +// printf("[App] ...woke up\n"); fflush(stdout); } d->isIdling = iFalse; diff --git a/src/gmrequest.c b/src/gmrequest.c index fe026a5b..884486b3 100644 --- a/src/gmrequest.c +++ b/src/gmrequest.c @@ -263,8 +263,8 @@ static void requestFinished_GmRequest_(iGmRequest *d, iTlsRequest *req) { unlock_Mutex(d->mtx); /* Check for mimehooks. */ if (d->isRespFiltered && d->state == finished_GmRequestState) { - setenv("REQUEST_URL", cstr_String(&d->url), 1); - iBlock *xbody = tryFilter_MimeHooks(mimeHooks_App(), &d->resp->meta, &d->resp->body); + iBlock *xbody = + tryFilter_MimeHooks(mimeHooks_App(), &d->resp->meta, &d->resp->body, &d->url); if (xbody) { lock_Mutex(d->mtx); clear_String(&d->resp->meta); diff --git a/src/mimehooks.c b/src/mimehooks.c index 8f1eb9db..5a1f0a9e 100644 --- a/src/mimehooks.c +++ b/src/mimehooks.c @@ -33,7 +33,8 @@ void setCommand_FilterHook(iFilterHook *d, const iString *command) { set_String(&d->command, command); } -iBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock *body) { +iBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock *body, + const iString *requestUrl) { iProcess * proc = new_Process(); iStringList *args = new_StringList(); iRangecc seg = iNullRange; @@ -46,6 +47,12 @@ iBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock } setArguments_Process(proc, args); iRelease(args); + if (!isEmpty_String(requestUrl)) { + setEnvironment_Process( + proc, + newStrings_StringList( + collectNewFormat_String("REQUEST_URL=%s", cstr_String(requestUrl)), NULL)); + } iBlock *output = NULL; if (start_Process(proc)) { writeInput_Process(proc, body); @@ -92,13 +99,14 @@ iBool willTryFilter_MimeHooks(const iMimeHooks *d, const iString *mime) { return iFalse; } -iBlock *tryFilter_MimeHooks(const iMimeHooks *d, const iString *mime, const iBlock *body) { +iBlock *tryFilter_MimeHooks(const iMimeHooks *d, const iString *mime, const iBlock *body, + const iString *requestUrl) { iRegExpMatch m; iConstForEach(PtrArray, i, &d->filters) { const iFilterHook *xc = i.ptr; init_RegExpMatch(&m); if (matchString_RegExp(xc->mimeRegex, mime, &m)) { - iBlock *result = run_FilterHook_(xc, mime, body); + iBlock *result = run_FilterHook_(xc, mime, body, requestUrl); if (result) { return result; } diff --git a/src/mimehooks.h b/src/mimehooks.h index 7a8cd2c9..6da14fdf 100644 --- a/src/mimehooks.h +++ b/src/mimehooks.h @@ -25,7 +25,7 @@ iDeclareTypeConstruction(MimeHooks) iBool willTryFilter_MimeHooks (const iMimeHooks *, const iString *mime); iBlock * tryFilter_MimeHooks (const iMimeHooks *, const iString *mime, - const iBlock *body); + const iBlock *body, const iString *requestUrl); void load_MimeHooks (iMimeHooks *, const char *saveDir); void save_MimeHooks (const iMimeHooks *); -- cgit v1.2.3