From 2f5c9e5bc97a81a1e83f825146453a4a89696274 Mon Sep 17 00:00:00 2001 From: Sebastian Hammer Date: Wed, 29 Mar 1995 15:40:16 +0000 Subject: [PATCH] Ongoing work. Statserv is now dynamic by default --- server/seshigh.c | 26 ++++++++++++++++++++++---- server/statserv.c | 16 ++++++++++------ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/server/seshigh.c b/server/seshigh.c index 1021c88..edda495 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.11 1995-03-28 09:16:21 quinn + * Revision 1.12 1995-03-29 15:40:16 quinn + * Ongoing work. Statserv is now dynamic by default + * + * Revision 1.11 1995/03/28 09:16:21 quinn * Added record packing to the search request * * Revision 1.10 1995/03/27 08:34:24 quinn @@ -189,6 +192,7 @@ static int process_initRequest(IOCHAN client, Z_InitRequest *req) association *assoc = iochan_getdata(client); bend_initrequest binitreq; bend_initresult *binitres; + Odr_bitmask options, protocolVersion; fprintf(stderr, "Got initRequest.\n"); if (req->implementationId) @@ -209,8 +213,22 @@ static int process_initRequest(IOCHAN client, Z_InitRequest *req) apdu.which = Z_APDU_initResponse; apdu.u.initResponse = &resp; resp.referenceId = req->referenceId; - resp.options = req->options; /* should check these */ - resp.protocolVersion = req->protocolVersion; + ODR_MASK_ZERO(&options); + if (ODR_MASK_GET(req->options, Z_Options_search)) + ODR_MASK_SET(&options, Z_Options_search); + if (ODR_MASK_GET(req->options, Z_Options_present)) + ODR_MASK_SET(&options, Z_Options_present); + if (ODR_MASK_GET(req->options, Z_Options_delSet)) + ODR_MASK_SET(&options, Z_Options_delSet); + if (ODR_MASK_GET(req->options, Z_Options_namedResultSets)) + ODR_MASK_SET(&options, Z_Options_namedResultSets); + resp.options = &options; + ODR_MASK_ZERO(&protocolVersion); + if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_1)) + ODR_MASK_SET(&protocolVersion, Z_ProtocolVersion_1); + if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_2)) + ODR_MASK_SET(&protocolVersion, Z_ProtocolVersion_2); + resp.protocolVersion = &protocolVersion; assoc->maximumRecordSize = *req->maximumRecordSize; /* * This is not so hot. The big todo for ODR is dynamic memory allocation @@ -226,7 +244,7 @@ static int process_initRequest(IOCHAN client, Z_InitRequest *req) resp.result = &result; resp.implementationId = "YAZ"; resp.implementationName = "Index Data/YAZ Generic Frontend Server"; - resp.implementationVersion = "$Revision: 1.11 $"; + resp.implementationVersion = "$Revision: 1.12 $"; resp.userInformationField = 0; if (!z_APDU(assoc->encode, &apdup, 0)) { diff --git a/server/statserv.c b/server/statserv.c index a616cc9..84190dd 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: statserv.c,v $ - * Revision 1.9 1995-03-27 08:34:30 quinn + * Revision 1.10 1995-03-29 15:40:16 quinn + * Ongoing work. Statserv is now dynamic by default + * + * Revision 1.9 1995/03/27 08:34:30 quinn * Added dynamic server functionality. * Released bindings to session.c (is now redundant) * @@ -57,7 +60,7 @@ #include static char *me = ""; -static int dynamic = 0; /* fork on incoming connection */ +static int dynamic = 1; /* fork on incoming connection */ #define DEFAULT_LISTENER "tcp:localhost:9999" @@ -189,7 +192,8 @@ static void add_listener(char *where, int what) void *ap; IOCHAN lst; - fprintf(stderr, "Adding %s listener on %s\n", + fprintf(stderr, "Adding %s %s listener on %s\n", + dynamic ? "dynamic" : "static", what == PROTO_SR ? "SR" : "Z3950", where); if (!where || sscanf(where, "%[^:]:%s", mode, addr) != 2) { @@ -253,7 +257,7 @@ int statserv_main(int argc, char **argv) int protocol = CS_Z3950;; me = argv[0]; - while ((ret = options("szdl:", argv, argc, &arg)) != -2) + while ((ret = options("szSl:", argv, argc, &arg)) != -2) switch (ret) { case 0: @@ -262,9 +266,9 @@ int statserv_main(int argc, char **argv) break; case 'z': protocol = CS_Z3950; break; case 's': protocol = CS_SR; break; - case 'd': dynamic = 1; break; + case 'S': dynamic = 0; break; default: - fprintf(stderr, "Usage: %s [ -zsd ... ]\n", me); + fprintf(stderr, "Usage: %s [ -zsS ... ]\n", me); exit(1); } if (dynamic) -- 1.7.10.4