You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2002/02/13 03:55:17 UTC
cvs commit: httpd-2.0/modules/mappers mod_negotiation.c
wrowe 02/02/12 18:55:17
Modified: modules/mappers mod_negotiation.c
Log:
Address the issue raised on list that users with a LanguagePriority
directive alone expect 'ForceLanguagePriority Prefer' behavior even
if that directive is omitted.
Revision Changes Path
1.95 +18 -9 httpd-2.0/modules/mappers/mod_negotiation.c
Index: mod_negotiation.c
===================================================================
RCS file: /home/cvs/httpd-2.0/modules/mappers/mod_negotiation.c,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -r1.94 -r1.95
--- mod_negotiation.c 29 Jan 2002 17:46:30 -0000 1.94
+++ mod_negotiation.c 13 Feb 2002 02:55:17 -0000 1.95
@@ -94,11 +94,13 @@
/* forcelangpriority flags
*/
-#define FLP_UNDEF 0 /* Same as FLP_NONE, but base overrides */
+#define FLP_UNDEF 0 /* Same as FLP_DEFAULT, but base overrides */
#define FLP_NONE 1 /* Return 406, HTTP_NOT_ACCEPTABLE */
#define FLP_PREFER 2 /* Use language_priority rather than MC */
#define FLP_FALLBACK 4 /* Use language_priority rather than NA */
+#define FLP_DEFAULT FLP_PREFER
+
module AP_MODULE_DECLARE_DATA negotiation_module;
static void *create_neg_dir_config(apr_pool_t *p, char *dummy)
@@ -117,10 +119,12 @@
neg_dir_config *new = (neg_dir_config *) apr_palloc(p, sizeof(neg_dir_config));
/* give priority to the config in the subdirectory */
- new->forcelangpriority = add->forcelangpriority ? add->forcelangpriority
- : base->forcelangpriority;
- new->language_priority = add->language_priority ? add->language_priority
- : base->language_priority;
+ new->forcelangpriority = (add->forcelangpriority != FLP_UNDEF)
+ ? add->forcelangpriority
+ : base->forcelangpriority;
+ new->language_priority = add->language_priority
+ ? add->language_priority
+ : base->language_priority;
return new;
}
@@ -1467,6 +1471,11 @@
static void set_language_quality(negotiation_state *neg, var_rec *variant)
{
+ int forcepriority = neg->conf->forcelangpriority;
+ if (forcepriority == FLP_UNDEF) {
+ forcepriority = FLP_DEFAULT;
+ }
+
if (!variant->content_languages || !variant->content_languages->nelts) {
/* This variant has no content-language, so use the default
* quality factor for variants with no content-language
@@ -1620,9 +1629,9 @@
* to LanguagePriority order. The best match is the lowest index of
* any LanguagePriority match.
*/
- if (((neg->conf->forcelangpriority & FLP_PREFER)
+ if (((forcepriority & FLP_PREFER)
&& (variant->lang_index < 0))
- || ((neg->conf->forcelangpriority & FLP_FALLBACK)
+ || ((forcepriority & FLP_FALLBACK)
&& !variant->lang_quality))
{
int bestidx = -1;
@@ -1647,12 +1656,12 @@
if (bestidx >= 0) {
if (variant->lang_quality) {
- if (neg->conf->forcelangpriority & FLP_PREFER) {
+ if (forcepriority & FLP_PREFER) {
variant->lang_index = bestidx;
}
}
else {
- if (neg->conf->forcelangpriority & FLP_FALLBACK) {
+ if (forcepriority & FLP_FALLBACK) {
variant->lang_index = bestidx;
variant->lang_quality = .0001f;
variant->definite = 0;