{
if (assoc->state != ASSOC_UP)
{
- yaz_log(YLOG_DEBUG, "Final timeout - closing connection.");
+ yaz_log(log_session, "Timeout. Closing connection");
/* do we need to lod this at all */
cs_close(conn);
destroy_association(assoc);
}
else
{
- yaz_log(log_sessiondetail,
- "Session idle too long. Sending close.");
+ yaz_log(log_sessiondetail, "Timeout. Sending Z39.50 Close");
do_close(assoc, Z_Close_lackOfActivity, 0);
}
return;
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;
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
int number = srw_req->maximumRecords ? *srw_req->maximumRecords : 0;
int start = srw_req->startRecord ? *srw_req->startRecord : 1;
- yaz_log(log_requestdetail, "Request to pack %d+%d out of %d",
+ yaz_log(log_requestdetail, "Request to pack %d+%d out of "
+ ODR_INT_PRINTF,
start, number, rr.hits);
srw_res->numberOfRecords = odr_intdup(assoc->encode, rr.hits);
wrbuf_printf(wr, "ERROR info:http/%d", *http_code);
else if (srw_res->numberOfRecords)
{
- wrbuf_printf(wr, "OK %d",
+ wrbuf_printf(wr, "OK " ODR_INT_PRINTF,
(srw_res->numberOfRecords ?
*srw_res->numberOfRecords : 0));
}
- wrbuf_printf(wr, " %s %d+%d",
+ wrbuf_printf(wr, " %s " ODR_INT_PRINTF " +%d",
(srw_res->resultSetId ?
srw_res->resultSetId : "-"),
(srw_req->startRecord ? *srw_req->startRecord : 1),
else
wrbuf_printf(wr, "OK - - ");
- wrbuf_printf(wr, "%d+%d+0 ",
+ wrbuf_printf(wr, ODR_INT_PRINTF "+" ODR_INT_PRINTF " ",
(srw_req->responsePosition ?
*srw_req->responsePosition : 1),
(srw_req->maximumTerms ?
int num_diagnostic = 0;
const char *host = z_HTTP_header_lookup(hreq->headers, "Host");
+ yaz_log(log_request, "%s %s HTTP/%s", hreq->method, hreq->path, hreq->version);
if (!control_association(assoc, host, 0))
{
p = z_get_HTTP_Response(o, 404);
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)
{
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");
binitres->errstring);
*resp->result = 0;
}
+ else
+ assoc->state = ASSOC_UP;
+
if (log_request)
{
if (!req->idAuthentication)
return zget_surrogateDiagRec(assoc->encode, dbname, error, addinfo);
}
-static Z_Records *pack_records(association *a, char *setname, int start,
- int *num, Z_RecordComposition *comp,
- int *next, int *pres,
+static Z_Records *pack_records(association *a, char *setname, Odr_int start,
+ Odr_int *num, Z_RecordComposition *comp,
+ Odr_int *next, Odr_int *pres,
Z_ReferenceId *referenceId,
Odr_oid *oid, int *errcode)
{
*num = 0;
*next = 0;
- yaz_log(log_requestdetail, "Request to pack %d+%d %s", start, toget, setname);
- yaz_log(log_requestdetail, "pms=%d, mrs=%d", a->preferredMessageSize,
+ yaz_log(log_requestdetail, "Request to pack " ODR_INT_PRINTF "+%d %s", start, toget, setname);
+ yaz_log(log_requestdetail, "pms=" ODR_INT_PRINTF
+ ", mrs=" ODR_INT_PRINTF, a->preferredMessageSize,
a->maximumRecordSize);
for (recno = start; reclist->num_records < toget; recno++)
{
}
else /* too big entirely */
{
- yaz_log(log_requestdetail, "Record > maxrcdsz this=%d max=%d",
+ yaz_log(log_requestdetail, "Record > maxrcdsz "
+ "this=%d max=" ODR_INT_PRINTF,
this_length, a->maximumRecordSize);
reclist->records[reclist->num_records] =
surrogatediagrec(a, freq.basename, 17, 0);
Z_APDU *apdu = (Z_APDU *)odr_malloc(assoc->encode, sizeof(*apdu));
Z_SearchResponse *resp = (Z_SearchResponse *)
odr_malloc(assoc->encode, sizeof(*resp));
- int *nulint = odr_intdup(assoc->encode, 0);
- int *next = odr_intdup(assoc->encode, 0);
- int *none = odr_intdup(assoc->encode, Z_SearchResponse_none);
+ Odr_int *nulint = odr_intdup(assoc->encode, 0);
+ Odr_int *next = odr_intdup(assoc->encode, 0);
+ Odr_int *none = odr_intdup(assoc->encode, Z_SearchResponse_none);
int returnedrecs = 0;
apdu->which = Z_APDU_searchResponse;
resp->resultCount = nulint;
resp->numberOfRecordsReturned = nulint;
resp->nextResultSetPosition = nulint;
- resp->searchStatus = nulint;
+ resp->searchStatus = odr_booldup(assoc->encode, 0);
resp->resultSetStatus = none;
resp->presentStatus = 0;
}
else
{
- bool_t *sr = odr_intdup(assoc->encode, 1);
- int *toget = odr_intdup(assoc->encode, 0);
+ bool_t *sr = odr_booldup(assoc->encode, 1);
+ Odr_int *toget = odr_intdup(assoc->encode, 0);
Z_RecordComposition comp, *compp = 0;
- yaz_log(log_requestdetail, "resultCount: %d", bsrt->hits);
+ yaz_log(log_requestdetail, "resultCount: " ODR_INT_PRINTF, bsrt->hits);
resp->records = 0;
resp->resultCount = &bsrt->hits;
if (*toget && !resp->records)
{
- int *presst = odr_intdup(assoc->encode, 0);
+ Odr_int *presst = odr_intdup(assoc->encode, 0);
/* Call bend_present if defined */
if (assoc->init->bend_present)
{
if (bsrt->errcode)
wrbuf_printf(wr, "ERROR %d", bsrt->errcode);
else
- wrbuf_printf(wr, "OK %d", bsrt->hits);
+ wrbuf_printf(wr, "OK " ODR_INT_PRINTF, bsrt->hits);
wrbuf_printf(wr, " %s 1+%d ",
req->resultSetName, returnedrecs);
yaz_query_to_wrbuf(wr, req->query);
Z_PresentRequest *req = reqb->apdu_request->u.presentRequest;
Z_APDU *apdu;
Z_PresentResponse *resp;
- int *next;
- int *num;
+ Odr_int *next;
+ Odr_int *num;
int errcode = 0;
const char *errstring = 0;
else if (*resp->presentStatus == Z_PresentStatus_success)
wrbuf_printf(wr, "OK - ");
else
- wrbuf_printf(wr, "Partial %d - ", *resp->presentStatus);
+ wrbuf_printf(wr, "Partial " ODR_INT_PRINTF " - ",
+ *resp->presentStatus);
- wrbuf_printf(wr, " %s %d+%d ",
+ wrbuf_printf(wr, " %s " ODR_INT_PRINTF "+" ODR_INT_PRINTF " ",
req->resultSetId, *req->resultSetStartPoint,
*req->numberOfRecordsRequested);
yaz_log(log_request, "%s", wrbuf_cstr(wr) );
Z_APDU *apdu = (Z_APDU *)odr_malloc(assoc->encode, sizeof(*apdu));
Z_ScanResponse *res = (Z_ScanResponse *)
odr_malloc(assoc->encode, sizeof(*res));
- int *scanStatus = odr_intdup(assoc->encode, Z_Scan_failure);
- int *numberOfEntriesReturned = odr_intdup(assoc->encode, 0);
+ Odr_int *scanStatus = odr_intdup(assoc->encode, Z_Scan_failure);
+ Odr_int *numberOfEntriesReturned = odr_intdup(assoc->encode, 0);
Z_ListEntries *ents = (Z_ListEntries *)
odr_malloc(assoc->encode, sizeof(*ents));
Z_DiagRecs *diagrecs_p = NULL;
*scanStatus = Z_Scan_success;
ents->entries = tab;
ents->num_entries = bsrr->num_entries;
- res->numberOfEntriesReturned = &ents->num_entries;
+ res->numberOfEntriesReturned = odr_intdup(assoc->encode,
+ ents->num_entries);
res->positionOfTerm = &bsrr->term_position;
for (i = 0; i < bsrr->num_entries; i++)
{
odr_malloc(assoc->encode, o->len = o->size =
strlen(bsrr->entries[i].term));
memcpy(o->buf, bsrr->entries[i].term, o->len);
- yaz_log(YLOG_DEBUG, " term #%d: '%s' (%d)", i,
+ yaz_log(YLOG_DEBUG, " term #%d: '%s' (" ODR_INT_PRINTF ")", i,
bsrr->entries[i].term, bsrr->entries[i].occurrences);
}
else
else
wrbuf_printf(wr, "OK");
- wrbuf_printf(wr, " %d - %d+%d+%d",
+ wrbuf_printf(wr, " " ODR_INT_PRINTF " - " ODR_INT_PRINTF "+"
+ ODR_INT_PRINTF "+" ODR_INT_PRINTF,
res->numberOfEntriesReturned ?
*res->numberOfEntriesReturned : 0,
(req->preferredPositionInResponse ?
bdrr->statuses = 0;
if (bdrr->num_setnames > 0)
{
- bdrr->statuses = (int*)
+ bdrr->statuses = (Odr_int*)
odr_malloc(assoc->encode, sizeof(*bdrr->statuses) *
bdrr->num_setnames);
for (i = 0; i < bdrr->num_setnames; i++)