tFix handling of uri-specific parameters - surf - customized build of surf, the… | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 2223417c91569f8314205d8f34c3cdf4d96d6e1a | |
parent a1328457cff30dc678a1b8e80dc44ddb73ce293c | |
Author: Quentin Rameau <[email protected]> | |
Date: Thu, 18 May 2017 12:33:28 +0200 | |
Fix handling of uri-specific parameters | |
We need to (re)apply uri-specific parameters for each new uri even if | |
tthe parameter has already been set to get the correct value. | |
Thanks to Julien STEINHAUSER <[email protected]> for the | |
report! | |
Diffstat: | |
M surf.c | 28 +++++++++++++++++++--------- | |
1 file changed, 19 insertions(+), 9 deletions(-) | |
--- | |
diff --git a/surf.c b/surf.c | |
t@@ -643,7 +643,7 @@ cookiepolicy_set(const WebKitCookieAcceptPolicy p) | |
void | |
seturiparameters(Client *c, const char *uri) | |
{ | |
- Parameter *newconfig = NULL; | |
+ Parameter *config, *newconfig = NULL; | |
int i; | |
for (i = 0; i < LENGTH(uriparams); ++i) { | |
t@@ -656,16 +656,26 @@ seturiparameters(Client *c, const char *uri) | |
if (!newconfig) | |
newconfig = defconfig; | |
- if (newconfig == curconfig) | |
- return; | |
for (i = 0; i < ParameterLast; ++i) { | |
- if (defconfig[i].force) | |
- continue; | |
- if (newconfig[i].force) | |
- setparameter(c, 0, i, &newconfig[i].val); | |
- else if (curconfig[i].force) | |
- setparameter(c, 0, i, &defconfig[i].val); | |
+ switch(i) { | |
+ case Certificate: | |
+ case CookiePolicies: | |
+ case Style: | |
+ config = defconfig[i].force ? defconfig : | |
+ newconfig[i].force ? newconfig : | |
+ defconfig; | |
+ break; | |
+ default: | |
+ if (newconfig == curconfig || defconfig[i].force) | |
+ continue; | |
+ config = newconfig[i].force ? newconfig : | |
+ curconfig[i].force ? defconfig : | |
+ NULL; | |
+ } | |
+ | |
+ if (config) | |
+ setparameter(c, 0, i, &config[i].val); | |
} | |
curconfig = newconfig; |