X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fseshigh.c;h=9d7db7e8cb789e79ec36f1ce2efbe48e93665fa3;hp=40d40494952a01fca37b40b1381091c758cef504;hb=1bb6c593dea33c483d06114ab5fee75c06bc90e1;hpb=7330ea6fe4f984d5bd0498aa7e962ad4d7462916 diff --git a/src/seshigh.c b/src/seshigh.c index 40d4049..9d7db7e 100644 --- a/src/seshigh.c +++ b/src/seshigh.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2003, Index Data * See the file LICENSE for details. * - * $Id: seshigh.c,v 1.2 2003-11-17 21:32:58 mike Exp $ + * $Id: seshigh.c,v 1.4 2003-12-04 11:48:06 adam Exp $ */ /* @@ -1443,7 +1443,7 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) Z_APDU *apdu = zget_APDU(assoc->encode, Z_APDU_initResponse); Z_InitResponse *resp = apdu->u.initResponse; bend_initresult *binitres; - + char *version; char options[140]; yaz_log(LOG_LOG, "Got initRequest"); @@ -1581,41 +1581,21 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) resp->preferredMessageSize = &assoc->preferredMessageSize; resp->maximumRecordSize = &assoc->maximumRecordSize; - resp->implementationName = "GFS/YAZ"; + resp->implementationId = odr_prepend(assoc->encode, + assoc->init->implementation_id, + resp->implementationId); - if (assoc->init->implementation_id) - { - char *nv = (char *) - odr_malloc (assoc->encode, - strlen(assoc->init->implementation_id) + 10 + - strlen(resp->implementationId)); - sprintf (nv, "%s/%s", - assoc->init->implementation_id, - resp->implementationId); - resp->implementationId = nv; - } - if (assoc->init->implementation_name) - { - char *nv = (char *) - odr_malloc (assoc->encode, - strlen(assoc->init->implementation_name) + 10 + - strlen(resp->implementationName)); - sprintf (nv, "%s/%s", - assoc->init->implementation_name, - resp->implementationName); - resp->implementationName = nv; - } - if (assoc->init->implementation_version) - { - char *nv = (char *) - odr_malloc (assoc->encode, - strlen(assoc->init->implementation_version) + 10 + - strlen(resp->implementationVersion)); - sprintf (nv, "%s/YAZ %s", - assoc->init->implementation_version, - resp->implementationVersion); - resp->implementationVersion = nv; - } + resp->implementationName = odr_prepend(assoc->encode, + assoc->init->implementation_name, + odr_prepend(assoc->encode, "GFS", resp->implementationName)); + + version = odr_strdup(assoc->encode, "$Revision: 1.4 $"); + if (strlen(version) > 10) /* check for unexpanded CVS strings */ + version[strlen(version)-2] = '\0'; + resp->implementationVersion = odr_prepend(assoc->encode, + assoc->init->implementation_version, + odr_prepend(assoc->encode, &version[11], + resp->implementationVersion)); if (binitres->errcode) { @@ -1946,6 +1926,7 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb, bsrr->basenames = req->databaseNames; bsrr->query = req->query; bsrr->stream = assoc->encode; + nmem_transfer(bsrr->stream->mem, reqb->request_mem); bsrr->decode = assoc->decode; bsrr->print = assoc->print; bsrr->errcode = 0;