diff options
Diffstat (limited to 'src/mimehooks.c')
-rw-r--r-- | src/mimehooks.c | 14 |
1 files changed, 11 insertions, 3 deletions
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) { | |||
33 | set_String(&d->command, command); | 33 | set_String(&d->command, command); |
34 | } | 34 | } |
35 | 35 | ||
36 | iBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock *body) { | 36 | iBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock *body, |
37 | const iString *requestUrl) { | ||
37 | iProcess * proc = new_Process(); | 38 | iProcess * proc = new_Process(); |
38 | iStringList *args = new_StringList(); | 39 | iStringList *args = new_StringList(); |
39 | iRangecc seg = iNullRange; | 40 | iRangecc seg = iNullRange; |
@@ -46,6 +47,12 @@ iBlock *run_FilterHook_(const iFilterHook *d, const iString *mime, const iBlock | |||
46 | } | 47 | } |
47 | setArguments_Process(proc, args); | 48 | setArguments_Process(proc, args); |
48 | iRelease(args); | 49 | iRelease(args); |
50 | if (!isEmpty_String(requestUrl)) { | ||
51 | setEnvironment_Process( | ||
52 | proc, | ||
53 | newStrings_StringList( | ||
54 | collectNewFormat_String("REQUEST_URL=%s", cstr_String(requestUrl)), NULL)); | ||
55 | } | ||
49 | iBlock *output = NULL; | 56 | iBlock *output = NULL; |
50 | if (start_Process(proc)) { | 57 | if (start_Process(proc)) { |
51 | writeInput_Process(proc, body); | 58 | writeInput_Process(proc, body); |
@@ -92,13 +99,14 @@ iBool willTryFilter_MimeHooks(const iMimeHooks *d, const iString *mime) { | |||
92 | return iFalse; | 99 | return iFalse; |
93 | } | 100 | } |
94 | 101 | ||
95 | iBlock *tryFilter_MimeHooks(const iMimeHooks *d, const iString *mime, const iBlock *body) { | 102 | iBlock *tryFilter_MimeHooks(const iMimeHooks *d, const iString *mime, const iBlock *body, |
103 | const iString *requestUrl) { | ||
96 | iRegExpMatch m; | 104 | iRegExpMatch m; |
97 | iConstForEach(PtrArray, i, &d->filters) { | 105 | iConstForEach(PtrArray, i, &d->filters) { |
98 | const iFilterHook *xc = i.ptr; | 106 | const iFilterHook *xc = i.ptr; |
99 | init_RegExpMatch(&m); | 107 | init_RegExpMatch(&m); |
100 | if (matchString_RegExp(xc->mimeRegex, mime, &m)) { | 108 | if (matchString_RegExp(xc->mimeRegex, mime, &m)) { |
101 | iBlock *result = run_FilterHook_(xc, mime, body); | 109 | iBlock *result = run_FilterHook_(xc, mime, body, requestUrl); |
102 | if (result) { | 110 | if (result) { |
103 | return result; | 111 | return result; |
104 | } | 112 | } |