X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fseshigh.c;h=9105f106d5754aa191cd09e00d117034c4d4abe0;hb=bceb14af6e76b53d2dcb49af2c981d4bbfc20e3a;hp=fb7a58319a9630415714acae057ac09b2f08790c;hpb=fe5f2da0c0c4ae00864cc72a36714e90405456e4;p=yaz-moved-to-github.git diff --git a/server/seshigh.c b/server/seshigh.c index fb7a583..9105f10 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -1,10 +1,16 @@ /* - * Copyright (C) 1994, Index Data I/S - * All rights reserved. + * Copyright (c) 1995, Index Data + * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.22 1995-05-15 11:56:39 quinn + * Revision 1.24 1995-05-16 08:51:04 quinn + * License, documentation, and memory fixes + * + * Revision 1.23 1995/05/15 13:25:10 quinn + * Fixed memory bug. + * + * Revision 1.22 1995/05/15 11:56:39 quinn * Asynchronous facilities. Restructuring of seshigh code. * * Revision 1.21 1995/05/02 08:53:19 quinn @@ -116,6 +122,7 @@ #include #include #include +#include "../version.h" #include @@ -158,6 +165,7 @@ association *create_association(IOCHAN channel, COMSTACK link) char filename[256]; FILE *f; + strcpy(filename, control_block->apdufile); if (!(new->print = odr_createmem(ODR_PRINT))) return 0; if (*control_block->apdufile != '-') @@ -261,8 +269,7 @@ void ir_session(IOCHAN h, int event) /* we got a complete PDU. Let's decode it */ req = request_get(); /* get a new request structure */ odr_reset(assoc->decode); - odr_setbuf(assoc->decode, assoc->input_buffer, - assoc->input_apdu_len, 0); + odr_setbuf(assoc->decode, assoc->input_buffer, res, 0); if (!z_APDU(assoc->decode, &req->request, 0)) { logf(LOG_WARN, "ODR error: %s", @@ -432,7 +439,14 @@ static int process_response(association *assoc, request *req, Z_APDU *res) } req->response = odr_getbuf(assoc->encode, &req->len_response, &req->size_response); + odr_setbuf(assoc->encode, 0, 0, 0); /* don't free if we have to quit */ odr_reset(assoc->encode); + if (assoc->print && !z_APDU(assoc->print, &res, 0)) + { + logf(LOG_WARN, "ODR print error: %s", + odr_errlist[odr_geterror(assoc->print)]); + odr_reset(assoc->print); + } /* change this when we make the backend reentrant */ assert(req == request_head(&assoc->incoming)); req->state = REQUEST_IDLE; @@ -510,7 +524,7 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) resp.result = &result; resp.implementationId = "YAZ"; resp.implementationName = "Index Data/YAZ Generic Frontend Server"; - resp.implementationVersion = "$Revision: 1.22 $"; + resp.implementationVersion = YAZ_VERSION; resp.userInformationField = 0; return &apdu; }