// Will be extended to take into account user associated with session
const char *session_setting_oneval(struct session_database *db, int offset)
{
- if (!db->settings[offset])
+ if (offset >= db->num_settings || !db->settings[offset])
return "";
return db->settings[offset]->value;
}
{
no_working++;
if (client_prep_connection(cl, se->service->z3950_operation_timeout,
- se->service->z3950_session_timeout))
+ se->service->z3950_session_timeout,
+ se->service->server->iochan_man))
client_start_search(cl);
}
}
sizeof(struct settings *) * db->num_settings);
new->num_settings = db->num_settings;
for (i = 0; i < db->num_settings; i++)
- new->settings[i] = db->settings[i];
+ {
+ struct setting *setting = db->settings[i];
+ new->settings[i] = setting;
+ }
new->next = se->databases;
se->databases = new;
}
static struct session_database *load_session_database(struct session *se,
char *id)
{
- struct database *db = find_database(id, se->service);
+ struct database *db = new_database(id, se->session_nmem);
- resolve_database(db);
+ resolve_database(se->service, db);
session_init_databases_fun((void*) se, db);
+
// New sdb is head of se->databases list
return se->databases;
}
stat->num_clients = count;
}
-
-// Master list of connections we're handling events to
-static iochan_man_t pazpar2_chan_man = 0; /* thread pr */
-
-void pazpar2_chan_man_start(void)
-{
- pazpar2_chan_man = iochan_man_create(0 /* use threads */);
-}
-
-void pazpar2_add_channel(IOCHAN chan)
-{
- assert(pazpar2_chan_man);
- iochan_add(pazpar2_chan_man, chan);
-}
-
-void pazpar2_event_loop()
-{
- assert(pazpar2_chan_man);
- iochan_man_events(pazpar2_chan_man);
-}
-
static struct record_metadata *record_metadata_init(
NMEM nmem, const char *value, enum conf_metadata_type type,
struct _xmlAttr *attr)