X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fseshigh.c;h=6866f9857d099294fcc10b6678388d015cd4e25a;hb=b2d4fae21009b1909a35ef9ae6bcd27c1a5dca74;hp=294651cdaad792e95aff907a6bb2cd3243f457c4;hpb=b159db0e380339b4f51ba3871458fcf09bbfdece;p=yaz-moved-to-github.git diff --git a/server/seshigh.c b/server/seshigh.c index 294651c..6866f98 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -4,7 +4,22 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.50 1995-10-25 16:58:32 quinn + * Revision 1.56 1995-12-14 11:09:57 quinn + * Work on Explain + * + * Revision 1.55 1995/11/08 17:41:37 quinn + * Smallish. + * + * Revision 1.54 1995/11/08 15:11:29 quinn + * Log of close transmit. + * + * Revision 1.53 1995/11/01 13:54:58 quinn + * Minor adjustments + * + * Revision 1.52 1995/11/01 12:19:13 quinn + * Second attempt to fix same bug. + * + * Revision 1.50 1995/10/25 16:58:32 quinn * Simple. * * Revision 1.49 1995/10/16 13:51:53 quinn @@ -193,7 +208,7 @@ #include #include -#include +#include #include #include #include @@ -232,7 +247,7 @@ association *create_association(IOCHAN channel, COMSTACK link) if (!control_block) control_block = statserv_getcontrol(); - if (!(new = malloc(sizeof(*new)))) + if (!(new = xmalloc(sizeof(*new)))) return 0; new->client_chan = channel; new->client_link = link; @@ -298,12 +313,12 @@ void destroy_association(association *h) if (h->print) odr_destroy(h->print); if (h->input_buffer) - free(h->input_buffer); + xfree(h->input_buffer); if (h->backend) bend_close(h->backend); while (request_deq(&h->incoming)); while (request_deq(&h->outgoing)); - free(h); + xfree(h); } static void do_close(association *a, int reason, char *message) @@ -317,7 +332,8 @@ static void do_close(association *a, int reason, char *message) while (request_deq(&a->outgoing)); if (a->version >= 3) { - logf(LOG_DEBUG, "Generating Close PDU"); + logf(LOG_LOG, "Sending Close PDU, reason=%d, message=%s", + reason, message ? message : "none"); apdu.which = Z_APDU_close; apdu.u.close = cls; *cls->closeReason = reason; @@ -442,7 +458,7 @@ void ir_session(IOCHAN h, int event) break; case 0: /* all sent - release the request structure */ logf(LOG_DEBUG, "Wrote PDU, %d bytes", req->len_response); - odr_release_mem(req->request_mem); + nmem_destroy(req->request_mem); request_deq(&assoc->outgoing); request_release(req); if (!request_head(&assoc->outgoing)) @@ -563,11 +579,12 @@ static int process_response(association *assoc, request *req, Z_APDU *res) { logf(LOG_WARN, "ODR error when encoding response: %s", odr_errlist[odr_geterror(assoc->decode)]); + odr_reset(assoc->encode); return -1; } req->response = odr_getbuf(assoc->encode, &req->len_response, &req->size_response); - odr_setbuf(assoc->encode, 0, 0, 0); /* don't free if we abort later */ + odr_setbuf(assoc->encode, 0, 0, 0); /* don'txfree if we abort later */ odr_reset(assoc->encode); if (assoc->print && !z_APDU(assoc->print, &res, 0)) { @@ -1044,7 +1061,7 @@ static Z_APDU *response_searchRequest(association *assoc, request *reqb, else { static int toget; - Z_RecordComposition comp; + Z_RecordComposition comp, *compp = 0; static int presst = 0; resp.records = 0; @@ -1055,14 +1072,16 @@ static Z_APDU *response_searchRequest(association *assoc, request *reqb, if (bsrt->hits <= *req->smallSetUpperBound) { toget = bsrt->hits; - comp.u.simple = req->smallSetElementSetNames; + if ((comp.u.simple = req->smallSetElementSetNames)) + compp = ∁ } else if (bsrt->hits < *req->largeSetLowerBound) { toget = *req->mediumSetPresentNumber; if (toget > bsrt->hits) toget = bsrt->hits; - comp.u.simple = req->mediumSetElementSetNames; + if ((comp.u.simple = req->mediumSetElementSetNames)) + compp = ∁ } else toget = 0; @@ -1078,7 +1097,7 @@ static Z_APDU *response_searchRequest(association *assoc, request *reqb, else form = prefformat->value; resp.records = pack_records(assoc, req->resultSetName, 1, - &toget, &comp, &next, &presst, form); + &toget, compp, &next, &presst, form); if (!resp.records) return 0; resp.numberOfRecordsReturned = &toget;