X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsettings.c;h=ece8f043bf58b3317345a214d9a9eba704dcee42;hb=84aba98c6b20e5363e47249d40e928eec42ccd72;hp=63b8b9bf2b652d144e2b75b1ff081e578ad0806d;hpb=9e8d657340483f6af7169828917da385f8e6ee9f;p=pazpar2-moved-to-github.git diff --git a/src/settings.c b/src/settings.c index 63b8b9b..ece8f04 100644 --- a/src/settings.c +++ b/src/settings.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2013 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 @@ -83,6 +83,9 @@ static char *hard_settings[] = { "pz:block_timeout", "pz:extendrecs", "pz:authentication_mode", + "pz:native_score", + "pz:memcached", + "pz:redis", 0 }; @@ -155,17 +158,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; }