X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsettings.c;h=85af04dc73842e98f2a9b3bbe658e3fb6125aac5;hb=67012bfe2cfb3f5ffc540747dac5d062fc5b7706;hp=de04cc1b9b05fd4077f308aa2a6b04916e5b362b;hpb=8961ed761e348e972f00d015284ce75c16b1648c;p=pazpar2-moved-to-github.git diff --git a/src/settings.c b/src/settings.c index de04cc1..85af04d 100644 --- a/src/settings.c +++ b/src/settings.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2012 Index Data + Copyright (C) Index Data Pazpar2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -81,6 +81,12 @@ static char *hard_settings[] = { "pz:sortmap:", "pz:present_chunk", "pz:block_timeout", + "pz:extendrecs", + "pz:authentication_mode", + "pz:native_score", + "pz:memcached", + "pz:redis", + "pz:timeout", 0 }; @@ -153,17 +159,24 @@ char *settings_name(struct conf_service *service, int offset) // Apply a session override to a database -void service_apply_setting(struct conf_service *service, char *setting, char *value) +void service_apply_setting(struct conf_service *service, char *name, char *value) { - struct setting *new = nmem_malloc(service->nmem, sizeof(*new)); - int offset = settings_create_offset(service, setting); + struct setting *s; + int offset = settings_create_offset(service, name); expand_settings_array(&service->settings->settings, &service->settings->num_settings, offset, service->nmem); - new->precedence = 0; - new->target = NULL; - new->name = setting; - new->value = value; - new->next = service->settings->settings[offset]; - service->settings->settings[offset] = new; + for (s = service->settings->settings[offset]; s; s = s->next) + if (!strcmp(s->name, name)) + { + s->value = value; + return; + } + s = nmem_malloc(service->nmem, sizeof(*s)); + s->precedence = 0; + s->target = NULL; + s->name = name; + s->value = value; + s->next = service->settings->settings[offset]; + service->settings->settings[offset] = s; } @@ -392,7 +405,7 @@ void expand_settings_array2(struct settings_array *settings, int offset, NMEM nm static void update_settings(struct setting *set, struct settings_array *settings, int offset, NMEM nmem) { struct setting **sp; - yaz_log(YLOG_LOG, "update service settings offset %d with %s=%s", offset, set->name, set->value); + yaz_log(YLOG_DEBUG, "update service settings offset %d with %s=%s", offset, set->name, set->value); expand_settings_array2(settings, offset, nmem); // First we determine if this setting is overriding any existing settings