X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient.c;h=4c40d9cb7f38510dbc2b57c2d2e800734ee6ba67;hb=cab4338c5c234466d9746982005b23de99555121;hp=5f05633bdf77041e25ba98283d69f0de60f005c7;hpb=0198d9a410e2664e29f8fa526cf9bcf8f5bea89a;p=pazpar2-moved-to-github.git diff --git a/src/client.c b/src/client.c index 5f05633..4c40d9c 100644 --- a/src/client.c +++ b/src/client.c @@ -764,17 +764,33 @@ static const char *get_strategy_plus_sort(struct client *l, const char *field) int client_fetch_more(struct client *cl) { - int extra = cl->hits - cl->record_offset; - if (extra > 0) + struct session_database *sdb = client_get_database(cl); + const char *str; + int extend_recs = 0; + int number; + + str = session_setting_oneval(sdb, PZ_EXTENDRECS); + if (str && *str) + extend_recs = atoi(str); + + if (extend_recs > cl->hits) + extend_recs = cl->hits; + + number = extend_recs - cl->record_offset; + if (number > 0) { ZOOM_resultset set = cl->resultset; - int max_extra = 10; + struct connection *co = client_get_connection(cl); - if (extra > max_extra) - extra = max_extra; + str = session_setting_oneval(sdb, PZ_REQUESTSYNTAX); + ZOOM_resultset_option_set(set, "preferredRecordSyntax", str); + str = session_setting_oneval(sdb, PZ_ELEMENTS); + if (str && *str) + ZOOM_resultset_option_set(set, "elementSetName", str); - ZOOM_resultset_records(set, 0, cl->record_offset, extra); + ZOOM_resultset_records(set, 0, cl->record_offset, number); client_set_state(cl, Client_Working); + connection_continue(co); return 1; } return 0;