Lagrange [release]
Set REQUEST_URL in the MIME hook environment
[1mdiff --git a/lib/the_Foundation b/lib/the_Foundation[m
[1mindex bf0965ae..4514a181 160000[m
[1m--- a/lib/the_Foundation[m
[1m+++ b/lib/the_Foundation[m
[36m@@ -1 +1 @@[m
[31m-Subproject commit bf0965aeabbf8f7121f86b9ca96d5adff0114b7a[m
[32m+[m[32mSubproject commit 4514a181458dfa02d73aafd6498e101b63eaa476[m
[1mdiff --git a/src/app.c b/src/app.c[m
[1mindex da6a343f..8a6b2a66 100644[m
[1m--- a/src/app.c[m
[1m+++ b/src/app.c[m
[36m@@ -550,7 +550,7 @@[m [mvoid processEvents_App(enum iAppEventMode eventMode) {[m
if (ev.type == SDL_USEREVENT && ev.user.code == asleep_UserEventCode) {[m
if (SDL_GetTicks() - d->lastEventTime > idleThreshold_App_) {[m
if (!d->isIdling) {[m
[31m- printf("[App] idling...\n");[m
[32m+[m[32m// printf("[App] idling...\n");[m
fflush(stdout);[m
}[m
d->isIdling = iTrue;[m
[36m@@ -559,7 +559,7 @@[m [mvoid processEvents_App(enum iAppEventMode eventMode) {[m
}[m
d->lastEventTime = SDL_GetTicks();[m
if (d->isIdling) {[m
[31m- printf("[App] ...woke up\n");[m
[32m+[m[32m// printf("[App] ...woke up\n");[m
fflush(stdout);[m
}[m
d->isIdling = iFalse;[m
[1mdiff --git a/src/gmrequest.c b/src/gmrequest.c[m
[1mindex fe026a5b..884486b3 100644[m
[1m--- a/src/gmrequest.c[m
[1m+++ b/src/gmrequest.c[m
[36m@@ -263,8 +263,8 @@[m [mstatic void requestFinished_GmRequest_(iGmRequest *d, iTlsRequest *req) {[m
unlock_Mutex(d->mtx);[m
/* Check for mimehooks. */[m
if (d->isRespFiltered && d->state == finished_GmRequestState) {[m
[31m- setenv("REQUEST_URL", cstr_String(&d->url), 1);[m
[31m- iBlock *xbody = tryFilter_MimeHooks(mimeHooks_App(), &d->resp->meta, &d->resp->body);[m
[32m+[m[32m iBlock *xbody =[m
[32m+[m[32m tryFilter_MimeHooks(mimeHooks_App(), &d->resp->meta, &d->resp->body, &d->url);[m
if (xbody) {[m
lock_Mutex(d->mtx);[m
clear_String(&d->resp->meta);[m
[1mdiff --git a/src/mimehooks.c b/src/mimehooks.c[m
[1mindex 8f1eb9db..5a1f0a9e 100644[m
[1m--- a/src/mimehooks.c[m
[1m+++ b/src/mimehooks.c[m
[36m@@ -33,7 +33,8 @@[m [mvoid setCommand_FilterHook(iFilterHook *d, const iString *command) {[m
set_String(&d->command, command);[m
}[m
[m
[31m-iBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock *body) {[m
[32m+[m[32miBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock *body,[m
[32m+[m[32m const iString *requestUrl) {[m
iProcess * proc = new_Process();[m
iStringList *args = new_StringList();[m
iRangecc seg = iNullRange;[m
[36m@@ -46,6 +47,12 @@[m [miBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock[m
}[m
setArguments_Process(proc, args);[m
iRelease(args);[m
[32m+[m[32m if (!isEmpty_String(requestUrl)) {[m
[32m+[m[32m setEnvironment_Process([m
[32m+[m[32m proc,[m
[32m+[m[32m newStrings_StringList([m
[32m+[m[32m collectNewFormat_String("REQUEST_URL=%s", cstr_String(requestUrl)), NULL));[m
[32m+[m[32m }[m
iBlock *output = NULL;[m
if (start_Process(proc)) {[m
writeInput_Process(proc, body);[m
[36m@@ -92,13 +99,14 @@[m [miBool willTryFilter_MimeHooks(const iMimeHooks *d, const iString *mime) {[m
return iFalse;[m
}[m
[m
[31m-iBlock *tryFilter_MimeHooks(const iMimeHooks *d, const iString *mime, const iBlock *body) {[m
[32m+[m[32miBlock *tryFilter_MimeHooks(const iMimeHooks *d, const iString *mime, const iBlock *body,[m
[32m+[m[32m const iString *requestUrl) {[m
iRegExpMatch m;[m
iConstForEach(PtrArray, i, &d->filters) {[m
const iFilterHook *xc = i.ptr;[m
init_RegExpMatch(&m);[m
if (matchString_RegExp(xc->mimeRegex, mime, &m)) {[m
[31m- iBlock *result = run_FilterHook_(xc, mime, body);[m
[32m+[m[32m iBlock *result = run_FilterHook_(xc, mime, body, requestUrl);[m
if (result) {[m
return result;[m
}[m
[1mdiff --git a/src/mimehooks.h b/src/mimehooks.h[m
[1mindex 7a8cd2c9..6da14fdf 100644[m
[1m--- a/src/mimehooks.h[m
[1m+++ b/src/mimehooks.h[m
[36m@@ -25,7 +25,7 @@[m [miDeclareTypeConstruction(MimeHooks)[m
[m
iBool willTryFilter_MimeHooks (const iMimeHooks *, const iString *mime);[m
iBlock * tryFilter_MimeHooks (const iMimeHooks *, const iString *mime,[m
[31m- const iBlock *body);[m
[32m+[m[32m const iBlock *body, const iString *requestUrl);[m
[m
void load_MimeHooks (iMimeHooks *, const char *saveDir);[m
void save_MimeHooks (const iMimeHooks *);[m