Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/pazpar2
authorAdam Dickmeiss <adam@indexdata.dk>
Fri, 4 Sep 2009 13:32:38 +0000 (15:32 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Fri, 4 Sep 2009 13:32:38 +0000 (15:32 +0200)
1  2 
src/logic.c

diff --combined src/logic.c
@@@ -196,7 -196,7 +196,7 @@@ xmlDoc *record_to_xml(struct session_da
  static void insert_settings_parameters(struct session_database *sdb,
                                         struct session *se, char **parms)
  {
 -    struct conf_service *service = global_parameters.server->service;
 +    struct conf_service *service = se->service;
      int i;
      int nparms = 0;
      int offset = 0;
          int setting;
  
          if (md->setting == Metadata_setting_parameter &&
 -            (setting = settings_offset(md->name)) > 0)
 +            (setting = settings_offset(service, md->name)) > 0)
          {
              const char *val = session_setting_oneval(sdb, setting);
              if (val && nparms < MAX_XSLT_ARGS)
  }
  
  // Add static values from session database settings if applicable
 -static void insert_settings_values(struct session_database *sdb, xmlDoc *doc)
 +static void insert_settings_values(struct session_database *sdb, xmlDoc *doc,
 +    struct conf_service *service)
  {
 -    struct conf_service *service = global_parameters.server->service;
      int i;
  
      for (i = 0; i < service->num_metadata; i++)
          int offset;
  
          if (md->setting == Metadata_setting_postproc &&
 -            (offset = settings_offset(md->name)) > 0)
 +            (offset = settings_offset(service, md->name)) > 0)
          {
              const char *val = session_setting_oneval(sdb, offset);
              if (val)
@@@ -287,7 -287,7 +287,7 @@@ xmlDoc *normalize_record(struct session
              rdoc = new;
          }
  
 -        insert_settings_values(sdb, rdoc);
 +        insert_settings_values(sdb, rdoc, se->service);
  
          if (global_parameters.dump_records)
          {
@@@ -532,7 -532,7 +532,7 @@@ enum pazpar2_error_code search(struct s
      live_channels = select_targets(se, criteria);
      if (live_channels)
      {
-         int maxrecs = live_channels * global_parameters.toget;
+         int maxrecs = live_channels * global_parameters.toget; // This is buggy!!!
          se->reclist = reclist_create(se->nmem, maxrecs);
          se->expected_maxrecs = maxrecs;
      }
  static void session_init_databases_fun(void *context, struct database *db)
  {
      struct session *se = (struct session *) context;
 +    struct conf_service *service = se->service;
      struct session_database *new = nmem_malloc(se->session_nmem, sizeof(*new));
 -    int num = settings_num();
 +    int num = settings_num(service);
      int i;
  
      new->database = db;
@@@ -605,7 -604,7 +605,7 @@@ static void session_database_destroy(st
  void session_init_databases(struct session *se)
  {
      se->databases = 0;
 -    predef_grep_databases(se, 0, session_init_databases_fun);
 +    predef_grep_databases(se, se->service, 0, session_init_databases_fun);
  }
  
  // Probably session_init_databases_fun should be refactored instead of
  static struct session_database *load_session_database(struct session *se, 
                                                        char *id)
  {
 -    struct database *db = find_database(id, 0);
 +    struct database *db = find_database(id, 0, se->service);
  
      session_init_databases_fun((void*) se, db);
      // New sdb is head of se->databases list
@@@ -637,9 -636,8 +637,9 @@@ void session_apply_setting(struct sessi
                             char *value)
  {
      struct session_database *sdb = find_session_database(se, dbname);
 +    struct conf_service *service = se->service;
      struct setting *new = nmem_malloc(se->session_nmem, sizeof(*new));
 -    int offset = settings_offset_cprefix(setting);
 +    int offset = settings_offset_cprefix(service, setting);
  
      if (offset < 0)
      {
@@@ -688,14 -686,13 +688,14 @@@ void destroy_session(struct session *s
      wrbuf_destroy(s->wrbuf);
  }
  
 -struct session *new_session(NMEM nmem) 
 +struct session *new_session(NMEM nmem, struct conf_service *service) 
  {
      int i;
      struct session *session = nmem_malloc(nmem, sizeof(*session));
  
      yaz_log(YLOG_DEBUG, "New Pazpar2 session");
 -    
 +
 +    session->service = service;
      session->relevance = 0;
      session->total_hits = 0;
      session->total_records = 0;
@@@ -1076,7 -1073,7 +1076,7 @@@ struct record *ingest_record(struct cli
      const char *mergekey_norm;
      xmlChar *type = 0;
      xmlChar *value = 0;
 -    struct conf_service *service = global_parameters.server->service;
 +    struct conf_service *service = se->service;
  
      if (!xdoc)
          return 0;
                             record_no);
  
      cluster = reclist_insert(se->reclist, 
 -                             global_parameters.server->service, 
 +                             service, 
                               record, (char *) mergekey_norm, 
                               &se->total_merged);
      if (global_parameters.dump_records)