X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fseshigh.c;h=8c0c3fa210b4a89b31d4d047b9e0904ac1283052;hb=47db800079d3df8e8adfd93b466795d0803dabe8;hp=9c791d18b14318c2c64bb4e31e0d6a6da9cdfcb1;hpb=7ef1b50f481cda83d012cc3d69d83f9313836f1f;p=yaz-moved-to-github.git diff --git a/src/seshigh.c b/src/seshigh.c index 9c791d1..8c0c3fa 100644 --- a/src/seshigh.c +++ b/src/seshigh.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2008 Index Data + * Copyright (C) 1995-2009 Index Data * See the file LICENSE for details. */ /** @@ -509,6 +509,7 @@ static void assoc_init_reset(association *assoc) assoc->init->bend_explain = NULL; assoc->init->bend_srw_scan = NULL; assoc->init->bend_srw_update = NULL; + assoc->init->named_result_sets = 0; assoc->init->charneg_request = NULL; assoc->init->charneg_response = NULL; @@ -664,7 +665,6 @@ static int retrieve_fetch(association *assoc, bend_fetch_rr *rr) rr->output_format = match_syntax; if (match_schema) rr->schema = odr_strdup(rr->stream, match_schema); - return 0; #else (*assoc->init->bend_fetch)(assoc->backend, rr); #endif @@ -1657,7 +1657,7 @@ static int check_path(const char *path) return 1; } -static char *read_file(const char *fname, ODR o, int *sz) +static char *read_file(const char *fname, ODR o, size_t *sz) { char *buf; FILE *inf = fopen(fname, "rb"); @@ -1710,7 +1710,7 @@ static void process_http_request(association *assoc, request *req) } else { - int content_size = 0; + size_t content_size = 0; char *content_buf = read_file(hreq->path+1, o, &content_size); if (!content_buf) { @@ -2164,7 +2164,6 @@ 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]; statserv_options_block *cb = 0; /* by default no control for backend */ @@ -2199,6 +2198,10 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) assoc->init->charneg_request = negotiation; } + /* by default named_result_sets is 0 .. Enable it if client asks for it. */ + if (ODR_MASK_GET(req->options, Z_Options_namedResultSets)) + assoc->init->named_result_sets = 1; + assoc->backend = 0; if (cb) { @@ -2265,7 +2268,8 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) ODR_MASK_SET(resp->options, Z_Options_extendedServices); strcat(options, " extendedServices"); } - if (ODR_MASK_GET(req->options, Z_Options_namedResultSets)) + if (ODR_MASK_GET(req->options, Z_Options_namedResultSets) + && assoc->init->named_result_sets) { ODR_MASK_SET(resp->options, Z_Options_namedResultSets); strcat(options, " namedresults"); @@ -2351,14 +2355,6 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) assoc->init->implementation_name, odr_prepend(assoc->encode, "GFS", resp->implementationName)); - version = odr_strdup(assoc->encode, "$Revision: 1.128 $"); - 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) { assoc->state = ASSOC_DEAD; @@ -3533,6 +3529,7 @@ int bend_assoc_is_alive(bend_association assoc) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab