#include "sru-p.h"
-#define SOLR_MAX_PARAMETERS 100
-
#if YAZ_HAVE_XML2
#include <libxml/parser.h>
#include <libxml/tree.h>
ODR encode, const char *charset)
{
const char *solr_op = 0;
- //TODO Change. not a nice hard coded, unchecked limit.
- char *name[SOLR_MAX_PARAMETERS], *value[SOLR_MAX_PARAMETERS];
+ char **name, **value;
char *uri_args;
char *path;
char *q;
char *cp;
const char *path_args = 0;
int i = 0;
+ int no_parms = 20; /* safe upper limit of args without extra_args */
+ Z_SRW_extra_arg *ea;
+
+ for (ea = srw_pdu->extra_args; ea; ea = ea->next)
+ no_parms++;
+ name = (char **) odr_malloc(encode, sizeof(*name) * no_parms);
+ value = (char **) odr_malloc(encode, sizeof(*value) * no_parms);
+
+ for (ea = srw_pdu->extra_args; ea; ea = ea->next)
+ {
+ name[i] = ea->name;
+ value[i] = ea->value;
+ i++;
+ }
z_HTTP_header_add_basic_auth(encode, &hreq->headers,
srw_pdu->username, srw_pdu->password);
else
return -1;
- if (srw_pdu->extra_args)
- {
- Z_SRW_extra_arg *ea = srw_pdu->extra_args;
- for (; ea && i < SOLR_MAX_PARAMETERS; ea = ea->next)
- {
- name[i] = ea->name;
- value[i] = ea->value;
- i++;
- }
- }
-
name[i++] = 0;
yaz_array_to_uri(&uri_args, encode, name, value);