* Copyright (C) 1995-2007, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: seshigh.c,v 1.125 2007-08-21 13:20:51 adam Exp $
+ * $Id: seshigh.c,v 1.127 2007-08-23 14:23:23 adam Exp $
*/
/**
* \file seshigh.c
if (sr->which == Z_SRW_searchRetrieve_request)
{
Z_SRW_PDU *res =
- yaz_srw_get(assoc->encode, Z_SRW_searchRetrieve_response);
-
+ yaz_srw_get_pdu(assoc->encode, Z_SRW_searchRetrieve_response,
+ sr->srw_version);
stylesheet = sr->u.request->stylesheet;
if (num_diagnostic)
{
}
else if (sr->which == Z_SRW_explain_request)
{
- Z_SRW_PDU *res = yaz_srw_get(o, Z_SRW_explain_response);
+ Z_SRW_PDU *res = yaz_srw_get_pdu(o, Z_SRW_explain_response,
+ sr->srw_version);
stylesheet = sr->u.explain_request->stylesheet;
if (num_diagnostic)
{
}
else if (sr->which == Z_SRW_scan_request)
{
- Z_SRW_PDU *res = yaz_srw_get(o, Z_SRW_scan_response);
+ Z_SRW_PDU *res = yaz_srw_get_pdu(o, Z_SRW_scan_response,
+ sr->srw_version);
stylesheet = sr->u.scan_request->stylesheet;
if (num_diagnostic)
{
}
else if (sr->which == Z_SRW_update_request)
{
- Z_SRW_PDU *res = yaz_srw_get(o, Z_SRW_update_response);
+ Z_SRW_PDU *res = yaz_srw_get_pdu(o, Z_SRW_update_response,
+ sr->srw_version);
yaz_log(YLOG_DEBUG, "handling SRW UpdateRequest");
if (num_diagnostic)
{
assoc->init->implementation_name,
odr_prepend(assoc->encode, "GFS", resp->implementationName));
- version = odr_strdup(assoc->encode, "$Revision: 1.125 $");
+ version = odr_strdup(assoc->encode, "$Revision: 1.127 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
resp->implementationVersion = odr_prepend(assoc->encode,
/* For YAZ 2.0 and earlier it was the backend handler that
initialized entries (member display_term did not exist)
YAZ 2.0 and later sets 'entries' and initialize all members
- including 'display_term'.
+ including 'display_term'. If YAZ 2.0 or later sees that
+ entries was modified - we assume that it is an old handler and
+ that 'display_term' is _not_ set.
*/
if (bsrr->num_entries > 0)
{
odr_malloc(assoc->encode, sizeof(*t));
t->suggestedAttributes = 0;
t->displayTerm = 0;
- if (bsrr->entries[i].display_term)
+ if (save_entries == bsrr->entries &&
+ bsrr->entries[i].display_term)
{
+ /* the entries was _not_ set by the handler. So it's
+ safe to test for new member display_term. It is
+ NULL'ed by us.
+ */
t->displayTerm = odr_strdup(assoc->encode,
bsrr->entries[i].display_term);
}