Lagrange [release]

Set REQUEST_URL in the MIME hook environment

f60c945da324c82eb0d4c10ffa5ba9e48bbe6141
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 *);