X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;ds=sidebyside;f=src%2Fsettings.c;h=85af04dc73842e98f2a9b3bbe658e3fb6125aac5;hb=194b8961ce560e233440017a65ec1758b3e6b5ec;hp=192a022027fe8439082a5840e49b0da35ced726b;hpb=b9a47565499b88aa9b22d75cec0c2c6fb40b67e9;p=pazpar2-moved-to-github.git diff --git a/src/settings.c b/src/settings.c index 192a022..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; }