- int id_no;
- struct gfs_listen *gl = gfs_listen_list;
- for (id_no = 1; gl; gl = gl->next, id_no++)
- if (gl->id && !strcmp(gl->id, listenref))
- {
- gfs->listen_ref = id_no;
- break;
- }
- if (!gl)
- yaz_log(YLOG_WARN, "Non-existent listenref '%s' in server "
- "config element", listenref);
+ char **refs;
+ int num, i;
+ nmem_strsplit(gfs_nmem, ",", listenref, &refs, &num);
+ gfs->listen_ref = (int*) nmem_malloc(gfs_nmem,
+ sizeof(int) * (num + 1));
+ for (i = 0; i < num; i++)
+ {
+ int id_no;
+ struct gfs_listen *gl = gfs_listen_list;
+ gfs->listen_ref[i] = 0;
+ for (id_no = 1; gl; gl = gl->next, id_no++)
+ if (gl->id && !strcmp(gl->id, refs[i]))
+ {
+ gfs->listen_ref[i] = id_no;
+ break;
+ }
+ if (!gl)
+ yaz_log(YLOG_WARN, "Non-existent listenref '%s' "
+ "in server config element", refs[i]);
+ }
+ gfs->listen_ref[i] = -1;