X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=server%2Fseshigh.c;h=ddad040b623d260361d786a494e678935da18944;hb=189fa86838b242b5f37e5ea2db92a84935050a81;hp=60ad9caaef1a112de06b08f4245a2719afbbe497;hpb=ee91cff35d9150fe522c72b903680ccc49bd75ba;p=yaz-moved-to-github.git diff --git a/server/seshigh.c b/server/seshigh.c index 60ad9ca..ddad040 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -4,7 +4,22 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.29 1995-06-01 11:25:03 quinn + * Revision 1.34 1995-06-14 15:26:46 quinn + * *** empty log message *** + * + * Revision 1.33 1995/06/06 14:57:05 quinn + * Better diagnostics. + * + * Revision 1.32 1995/06/06 08:41:44 quinn + * Better diagnostics. + * + * Revision 1.31 1995/06/06 08:15:37 quinn + * Cosmetic. + * + * Revision 1.30 1995/06/05 10:53:32 quinn + * Added a better SCAN. + * + * Revision 1.29 1995/06/01 11:25:03 quinn * Smallish. * * Revision 1.28 1995/06/01 11:21:01 quinn @@ -138,7 +153,6 @@ #include #include #include -#include "../version.h" #include @@ -266,6 +280,7 @@ void ir_session(IOCHAN h, int event) { logf(LOG_DEBUG, "ir_session (input)"); assert(assoc && conn); + /* We aren't speaking to this fellow */ if (assoc->rejected) { logf(LOG_LOG, "Closed connection after reject"); @@ -289,6 +304,7 @@ void ir_session(IOCHAN h, int event) iochan_setevent(h, EVENT_INPUT); /* we got a complete PDU. Let's decode it */ + logf(LOG_DEBUG, "Got PDU, %d bytes", res); req = request_get(); /* get a new request structure */ odr_reset(assoc->decode); odr_setbuf(assoc->decode, assoc->input_buffer, res, 0); @@ -336,6 +352,7 @@ void ir_session(IOCHAN h, int event) iochan_destroy(h); 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); request_deq(&assoc->outgoing); request_release(req); @@ -376,7 +393,7 @@ static int process_request(association *assoc) case Z_APDU_scanRequest: res = process_scanRequest(assoc, req, &fd); break; default: - logf(LOG_WARN, "Bad APDU"); + logf(LOG_WARN, "Bad APDU received"); return -1; } if (res) @@ -485,16 +502,15 @@ static int process_response(association *assoc, request *req, Z_APDU *res) /* * Handle init request. * At the moment, we don't check the protocol version or the options - * anywhere else in the code - we just don't do anything that would - * break a naive client. + * anywhere else in the code - we just try not to do anything that would + * break a naive client. We'll toss 'em into the association block when + * we need them there. */ static Z_APDU *process_initRequest(association *assoc, request *reqb) { Z_InitRequest *req = reqb->request->u.initRequest; - static Z_APDU apdu; - static Z_InitResponse resp; - static bool_t result = 1; - static Odr_bitmask options, protocolVersion; + Z_APDU *apdu = zget_APDU(assoc->encode, Z_APDU_initResponse); + Z_InitResponse *resp = apdu->u.initResponse; bend_initrequest binitreq; bend_initresult *binitres; @@ -515,51 +531,43 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) } assoc->backend = binitres->handle; - apdu.which = Z_APDU_initResponse; - apdu.u.initResponse = &resp; - resp.referenceId = req->referenceId; + resp->referenceId = req->referenceId; /* let's tell the client what we can do */ - ODR_MASK_ZERO(&options); if (ODR_MASK_GET(req->options, Z_Options_search)) - ODR_MASK_SET(&options, Z_Options_search); + ODR_MASK_SET(resp->options, Z_Options_search); if (ODR_MASK_GET(req->options, Z_Options_present)) - ODR_MASK_SET(&options, Z_Options_present); + ODR_MASK_SET(resp->options, Z_Options_present); #if 0 if (ODR_MASK_GET(req->options, Z_Options_delSet)) ODR_MASK_SET(&options, Z_Options_delSet); #endif if (ODR_MASK_GET(req->options, Z_Options_namedResultSets)) - ODR_MASK_SET(&options, Z_Options_namedResultSets); + ODR_MASK_SET(resp->options, Z_Options_namedResultSets); if (ODR_MASK_GET(req->options, Z_Options_scan)) - ODR_MASK_SET(&options, Z_Options_scan); + ODR_MASK_SET(resp->options, Z_Options_scan); if (ODR_MASK_GET(req->options, Z_Options_concurrentOperations)) - ODR_MASK_SET(&options, Z_Options_concurrentOperations); - resp.options = &options; + ODR_MASK_SET(resp->options, Z_Options_concurrentOperations); - ODR_MASK_ZERO(&protocolVersion); if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_1)) - ODR_MASK_SET(&protocolVersion, Z_ProtocolVersion_1); + ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_1); if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_2)) - ODR_MASK_SET(&protocolVersion, Z_ProtocolVersion_2); - resp.protocolVersion = &protocolVersion; + ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_2); assoc->maximumRecordSize = *req->maximumRecordSize; if (assoc->maximumRecordSize > control_block->maxrecordsize) assoc->maximumRecordSize = control_block->maxrecordsize; assoc->preferredMessageSize = *req->preferredMessageSize; if (assoc->preferredMessageSize > assoc->maximumRecordSize) assoc->preferredMessageSize = assoc->maximumRecordSize; - resp.preferredMessageSize = &assoc->preferredMessageSize; - resp.maximumRecordSize = &assoc->maximumRecordSize; - resp.result = &result; - resp.implementationName = "Index Data/YAZ Generic Frontend Server"; - resp.userInformationField = 0; + resp->preferredMessageSize = &assoc->preferredMessageSize; + resp->maximumRecordSize = &assoc->maximumRecordSize; + resp->implementationName = "Index Data/YAZ Generic Frontend Server"; if (binitres->errcode) { logf(LOG_LOG, "Connection rejected by backend."); - result = 0; + *resp->result = 0; assoc->rejected = 1; } - return &apdu; + return apdu; } /* @@ -931,6 +939,7 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd) bend_scanrequest srq; bend_scanresult *srs; + logf(LOG_LOG, "Got scanrequest"); apdu.which = Z_APDU_scanResponse; apdu.u.scanResponse = &res; res.referenceId = req->referenceId; @@ -949,6 +958,10 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd) ents.u.nonSurrogateDiagnostics = diagrecs(assoc->proto, 205, 0); else { + if (req->termListAndStartPoint->term->which == Z_Term_general) + logf(LOG_DEBUG, " term: '%.*s'", + req->termListAndStartPoint->term->u.general->len, + req->termListAndStartPoint->term->u.general->buf); srq.num_bases = req->num_databaseNames; srq.basenames = req->databaseNames; srq.num_entries = *req->numberOfTermsRequested; @@ -997,6 +1010,8 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd) o->buf = odr_malloc(assoc->encode, o->len = o->size = strlen(srs->entries[i].term)); memcpy(o->buf, srs->entries[i].term, o->len); + logf(LOG_DEBUG, " term #%d: '%s' (%d)", i, + srs->entries[i].term, srs->entries[i].occurrences); } list.num_entries = i; res.numberOfEntriesReturned = &list.num_entries;