* ----------------------------------------------------------------------
*
* Copyright (c) 2000-2004, Index Data.
* ----------------------------------------------------------------------
*
* Copyright (c) 2000-2004, Index Data.
hv_store(href, "DATABASES", 9, newRV( (SV*) aref), 0);
hv_store(href, "HANDLE", 6, zhandle->handle, 0);
hv_store(href, "PID", 3, newSViv(getpid()), 0);
hv_store(href, "DATABASES", 9, newRV( (SV*) aref), 0);
hv_store(href, "HANDLE", 6, zhandle->handle, 0);
hv_store(href, "PID", 3, newSViv(getpid()), 0);
- hv_store(href, "RPN", 3, zquery2perl(rr->query), 0);
+ if ((rpnSV = zquery2perl(rr->query)) != 0) {
+ hv_store(href, "RPN", 3, rpnSV, 0);
+ }
query = zquery2pquery(rr->query);
if (query)
{
hv_store(href, "QUERY", 5, newSVpv((char *)query->buf, query->pos), 0);
}
query = zquery2pquery(rr->query);
if (query)
{
hv_store(href, "QUERY", 5, newSVpv((char *)query->buf, query->pos), 0);
}
+ else if (rr->query->which == Z_Query_type_104 &&
+ rr->query->u.type_104->which == Z_External_CQL) {
+ hv_store(href, "CQL", 3,
+ newSVpv(rr->query->u.type_104->u.cql, 0), 0);
+ }
href = newHV();
hv_store(href, "SETNAME", 7, newSVpv(rr->setname, 0), 0);
temp = hv_store(href, "OFFSET", 6, newSViv(rr->number), 0);
href = newHV();
hv_store(href, "SETNAME", 7, newSVpv(rr->setname, 0), 0);
temp = hv_store(href, "OFFSET", 6, newSViv(rr->number), 0);
- oid_dotted = oid2dotted(rr->request_format_raw);
+ if (rr->request_format_raw != 0) {
+ oid_dotted = oid2dotted(rr->request_format_raw);
+ } else {
+ /* Probably an SRU request: assume XML is required */
+ oid_dotted = wrbuf_alloc();
+ wrbuf_puts(oid_dotted, "1.2.840.10003.5.109.10");
+ }
hv_store(href, "REQ_FORM", 8, newSVpv((char *)oid_dotted->buf, oid_dotted->pos), 0);
hv_store(href, "REP_FORM", 8, newSVpv((char *)oid_dotted->buf, oid_dotted->pos), 0);
hv_store(href, "BASENAME", 8, newSVpv("", 0), 0);
hv_store(href, "REQ_FORM", 8, newSVpv((char *)oid_dotted->buf, oid_dotted->pos), 0);
hv_store(href, "REP_FORM", 8, newSVpv((char *)oid_dotted->buf, oid_dotted->pos), 0);
hv_store(href, "BASENAME", 8, newSVpv("", 0), 0);
bend_initresult *r = (bend_initresult *)
odr_malloc (q->stream, sizeof(*r));
char *ptr;
bend_initresult *r = (bend_initresult *)
odr_malloc (q->stream, sizeof(*r));
char *ptr;
hv_store(href, "HANDLE", 6, newSVsv(&sv_undef), 0);
hv_store(href, "PID", 3, newSViv(getpid()), 0);
if (q->auth) {
hv_store(href, "HANDLE", 6, newSVsv(&sv_undef), 0);
hv_store(href, "PID", 3, newSViv(getpid()), 0);
if (q->auth) {
- char *openpass = xstrdup (q->auth->u.open);
- char *cp = strchr (openpass, '/');
+ user = nmem_strdup (odr_getmem (q->stream), q->auth->u.open);
+ char *cp = strchr (user, '/');
} else if (q->auth->which == Z_IdAuthentication_idPass) {
user = q->auth->u.idPass->userId;
passwd = q->auth->u.idPass->password;
}
/* ### some code paths have user/password unassigned here */
} else if (q->auth->which == Z_IdAuthentication_idPass) {
user = q->auth->u.idPass->userId;
passwd = q->auth->u.idPass->password;
}
/* ### some code paths have user/password unassigned here */
- hv_store(href, "USER", 4, newSVpv(user, 0), 0);
- hv_store(href, "PASS", 4, newSVpv(passwd, 0), 0);
+ if (user)
+ hv_store(href, "USER", 4, newSVpv(user, 0), 0);
+ if (passwd)
+ hv_store(href, "PASS", 4, newSVpv(passwd, 0), 0);