static YAZ_MUTEX g_http_session_mutex = 0;
static int g_http_sessions = 0;
+int get_version(struct http_request *rq) {
+ const char *version = http_argbyname(rq, "version");
+ int version_no = 0;
+ if (version && strcmp(version, "")) {
+ version_no = atoi(version);
+ }
+ return version_no;
+}
+
+
int http_session_use(int delta)
{
int sessions;
struct http_request *rq = c->request;
const char *name = http_argbyname(rq, "name");
const char *nums = http_argbyname(rq, "num");
- const char *version = http_argbyname(rq, "version");
- int version_no = 0;
- if (version && strcmp(version, "")) {
- version_no = atoi(version);
- }
+ int version = get_version(rq);
int num = 15;
int status;
}
wrbuf_printf(c->wrbuf, "<activeclients>%d</activeclients>\n", status);
- perform_termlist(c, s->psession, name, num, version_no);
+ perform_termlist(c, s->psession, name, num, version);
response_close(c, "termlist");
}
struct hitsbytarget *ht;
struct http_request *rq = c->request;
const char *settings = http_argbyname(rq, "settings");
- const char *protocol_version = http_argbyname(rq, "version");
- int version = 0;
- if (protocol_version && strcmp(protocol_version,"")) {
- version = atoi(protocol_version);
- }
+ int version = get_version(rq);
ht = get_hitsbytarget(s->psession, &count, c->nmem);
if (!cmd_status)
/* Old protocol, always ok */
const char *start = http_argbyname(rq, "start");
const char *num = http_argbyname(rq, "num");
const char *sort = http_argbyname(rq, "sort");
+ int version = get_version(rq);
+
int startn = 0;
int numn = 20;
int total;
Odr_int total_hits;
+ Odr_int approx_hits;
int i;
if (!s)
}
- rl = show_range_start(s->psession, sp, startn, &numn, &total, &total_hits);
+ rl = show_range_start(s->psession, sp, startn, &numn, &total, &total_hits, &approx_hits);
response_open(c, "show");
wrbuf_printf(c->wrbuf, "\n<activeclients>%d</activeclients>\n", active);
wrbuf_printf(c->wrbuf, "<merged>%d</merged>\n", total);
wrbuf_printf(c->wrbuf, "<total>" ODR_INT_PRINTF "</total>\n", total_hits);
+ if (version >= 2) {
+ wrbuf_printf(c->wrbuf, "<approximation>" ODR_INT_PRINTF "</approximation>\n", approx_hits);
+ }
wrbuf_printf(c->wrbuf, "<start>%d</start>\n", startn);
wrbuf_printf(c->wrbuf, "<num>%d</num>\n", numn);
const char *block = http_argbyname(rq, "block");
const char *sort = http_argbyname(rq, "sort");
const char *block_error = http_argbyname(rq, "report");
+
struct reclist_sortparms *sp;
int status;
int report_error = 0;