- resp.numberOfRecordsReturned = &nulint;
- nrp = bsrt->hits ? 1 : 0;
- resp.nextResultSetPosition = &nrp;
- resp.searchStatus = &sr;
- resp.resultSetStatus = &sr;
- resp.presentStatus = 0;
+
+ /* how many records does the user agent want, then? */
+ if (bsrt->hits <= *req->smallSetUpperBound)
+ {
+ toget = bsrt->hits;
+ setnames = req->smallSetElementSetNames;
+ }
+ else if (bsrt->hits < *req->largeSetLowerBound)
+ {
+ toget = *req->mediumSetPresentNumber;
+ setnames = req->mediumSetElementSetNames;
+ }
+ else
+ toget = 0;
+
+ if (toget)
+ {
+ resp.records = pack_records(assoc, req->resultSetName, 1, &toget,
+ setnames, &next, &presst);
+ if (!resp.records)
+ return -1;
+ resp.numberOfRecordsReturned = &toget;
+ resp.nextResultSetPosition = &next;
+ resp.searchStatus = &sr;
+ resp.resultSetStatus = &sr;
+ resp.presentStatus = &presst;
+ }
+ else
+ {
+ resp.records = 0;
+ resp.numberOfRecordsReturned = &nulint;
+ resp.nextResultSetPosition = &nulint;
+ resp.searchStatus = &sr;
+ resp.resultSetStatus = &sr;
+ resp.presentStatus = 0;
+ }