Fix handling of uri-specific parameters
We need to (re)apply uri-specific parameters for each new uri even if the parameter has already been set to get the correct value. Thanks to Julien STEINHAUSER <julien.steinhauser@orange.fr> for the report!
This commit is contained in:
parent
a1328457cf
commit
2223417c91
1 changed files with 19 additions and 9 deletions
28
surf.c
28
surf.c
|
@ -643,7 +643,7 @@ cookiepolicy_set(const WebKitCookieAcceptPolicy p)
|
||||||
void
|
void
|
||||||
seturiparameters(Client *c, const char *uri)
|
seturiparameters(Client *c, const char *uri)
|
||||||
{
|
{
|
||||||
Parameter *newconfig = NULL;
|
Parameter *config, *newconfig = NULL;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < LENGTH(uriparams); ++i) {
|
for (i = 0; i < LENGTH(uriparams); ++i) {
|
||||||
|
@ -656,16 +656,26 @@ seturiparameters(Client *c, const char *uri)
|
||||||
|
|
||||||
if (!newconfig)
|
if (!newconfig)
|
||||||
newconfig = defconfig;
|
newconfig = defconfig;
|
||||||
if (newconfig == curconfig)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (i = 0; i < ParameterLast; ++i) {
|
for (i = 0; i < ParameterLast; ++i) {
|
||||||
if (defconfig[i].force)
|
switch(i) {
|
||||||
continue;
|
case Certificate:
|
||||||
if (newconfig[i].force)
|
case CookiePolicies:
|
||||||
setparameter(c, 0, i, &newconfig[i].val);
|
case Style:
|
||||||
else if (curconfig[i].force)
|
config = defconfig[i].force ? defconfig :
|
||||||
setparameter(c, 0, i, &defconfig[i].val);
|
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;
|
curconfig = newconfig;
|
||||||
|
|
Loading…
Reference in a new issue