X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsettings.c;h=ece8f043bf58b3317345a214d9a9eba704dcee42;hb=62d0f3042e380b729b560c653a5dc96978df7c78;hp=e8d61251adabbd1968af3230c308164a37d3ac07;hpb=545611a81c7627b6380a0bda6f22cae3c6e16fe1;p=pazpar2-moved-to-github.git diff --git a/src/settings.c b/src/settings.c index e8d6125..ece8f04 100644 --- a/src/settings.c +++ b/src/settings.c @@ -85,6 +85,7 @@ static char *hard_settings[] = { "pz:authentication_mode", "pz:native_score", "pz:memcached", + "pz:redis", 0 }; @@ -157,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; }