X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fhttp_command.c;h=2e8a6eadb540e3d8dc69499f3ce6f7017096598d;hb=bbefc8e129c52134c62405c693846876541aac0e;hp=8887e91e3dc2323561dc582ed604590cfac559a7;hpb=61a9c0fc574244c16e5a6bd44e796549de0bd559;p=pazpar2-moved-to-github.git diff --git a/src/http_command.c b/src/http_command.c index 8887e91..2e8a6ea 100644 --- a/src/http_command.c +++ b/src/http_command.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2012 Index Data + Copyright (C) 2006-2013 Index Data Pazpar2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -162,7 +162,7 @@ struct http_session *http_session_create(struct conf_service *service, char tmp_str[50]; sprintf(tmp_str, "session#%u", sesid); - r->psession = new_session(nmem, service, sesid); + r->psession = session_create(nmem, service, sesid); r->session_id = sesid; r->timestamp = 0; r->nmem = nmem; @@ -405,7 +405,8 @@ static void cmd_exit(struct http_channel *c) response_open(c, "exit"); response_close(c, "exit"); - http_close_server(c->server); + if (global_parameters.debug_mode) + http_close_server(c->server); } static void cmd_init(struct http_channel *c) @@ -726,6 +727,9 @@ static void bytarget_response(struct http_channel *c, struct http_session *s, co wrbuf_printf(c->wrbuf, "%d\n", ht[i].diagnostic); if (ht[i].diagnostic) { + wrbuf_puts(c->wrbuf, ""); + wrbuf_xmlputs(c->wrbuf, ht[i].message); + wrbuf_puts(c->wrbuf, "\n"); wrbuf_puts(c->wrbuf, ""); if (ht[i].addinfo) wrbuf_xmlputs(c->wrbuf, ht[i].addinfo); @@ -821,7 +825,9 @@ static void cmd_bytarget(struct http_channel *c) return; } } + session_enter_ro(s->psession, "cmd_bytarget"); bytarget_response(c, s, status_message); + session_leave_ro(s->psession, "cmd_bytarget"); release_session(c, s); } @@ -1111,7 +1117,6 @@ static void show_records(struct http_channel *c, struct http_session *s, int act { error(rs, PAZPAR2_MALFORMED_PARAMETER_VALUE, "sort"); return; - } rl = show_range_start(s->psession, sp, startn, &numn, &total, &total_hits, &approx_hits); @@ -1157,7 +1162,6 @@ static void show_records(struct http_channel *c, struct http_session *s, int act } show_range_stop(s->psession, rl); - response_close(c, "show"); } @@ -1261,7 +1265,9 @@ static void cmd_show(struct http_channel *c) } } } + session_enter_ro(s->psession, "show_records"); show_records(c, s, status); + session_leave_ro(s->psession, "show_records"); release_session(c, s); } @@ -1351,17 +1357,17 @@ static void cmd_stat(struct http_channel *c) } response_open_no_status(c, "stat"); - wrbuf_printf(c->wrbuf, "%d\n", clients); - wrbuf_printf(c->wrbuf, "" ODR_INT_PRINTF "\n", stat.num_hits); - wrbuf_printf(c->wrbuf, "%d\n", stat.num_records); - wrbuf_printf(c->wrbuf, "%d\n", stat.num_clients); - wrbuf_printf(c->wrbuf, "%d\n", stat.num_no_connection); - wrbuf_printf(c->wrbuf, "%d\n", stat.num_connecting); - wrbuf_printf(c->wrbuf, "%d\n", stat.num_working); - wrbuf_printf(c->wrbuf, "%d\n", stat.num_idle); - wrbuf_printf(c->wrbuf, "%d\n", stat.num_failed); - wrbuf_printf(c->wrbuf, "%d\n", stat.num_error); - wrbuf_printf(c->wrbuf, "%.2f\n", progress); + wrbuf_printf(c->wrbuf, "\n %d\n", clients); + wrbuf_printf(c->wrbuf, " " ODR_INT_PRINTF "\n", stat.num_hits); + wrbuf_printf(c->wrbuf, " %d\n", stat.num_records); + wrbuf_printf(c->wrbuf, " %d\n", stat.num_clients); + wrbuf_printf(c->wrbuf, " %d\n", stat.num_no_connection); + wrbuf_printf(c->wrbuf, " %d\n", stat.num_connecting); + wrbuf_printf(c->wrbuf, " %d\n", stat.num_working); + wrbuf_printf(c->wrbuf, " %d\n", stat.num_idle); + wrbuf_printf(c->wrbuf, " %d\n", stat.num_failed); + wrbuf_printf(c->wrbuf, " %d\n", stat.num_error); + wrbuf_printf(c->wrbuf, " %.2f\n", progress); response_close(c, "stat"); release_session(c, s); } @@ -1369,26 +1375,39 @@ static void cmd_stat(struct http_channel *c) static void cmd_info(struct http_channel *c) { char yaz_version_str[20]; + char yaz_sha1_str[42]; response_open_no_status(c, "info"); - wrbuf_puts(c->wrbuf, " \n"); + wrbuf_puts(c->wrbuf, "\n \n"); wrbuf_puts(c->wrbuf, " wrbuf, " sha1=\"%s\"", PAZPAR2_VERSION_SHA1); #endif wrbuf_puts(c->wrbuf, ">"); wrbuf_xmlputs(c->wrbuf, VERSION); - wrbuf_puts(c->wrbuf, ""); + wrbuf_puts(c->wrbuf, "\n"); - yaz_version(yaz_version_str, 0); + yaz_version(yaz_version_str, yaz_sha1_str); wrbuf_puts(c->wrbuf, " wrbuf, YAZ_VERSION); + wrbuf_puts(c->wrbuf, "\" sha1=\""); + wrbuf_xmlputs(c->wrbuf, yaz_sha1_str); wrbuf_puts(c->wrbuf, "\">"); wrbuf_xmlputs(c->wrbuf, yaz_version_str); wrbuf_puts(c->wrbuf, "\n"); wrbuf_puts(c->wrbuf, " \n"); - +#if HAVE_UNISTD_H + { + char hostname_str[64]; + if (gethostname(hostname_str, sizeof(hostname_str)) == 0) + { + wrbuf_puts(c->wrbuf, " "); + wrbuf_xmlputs(c->wrbuf, hostname_str); + wrbuf_puts(c->wrbuf, "\n"); + } + } +#endif info_services(c->server, c->wrbuf); response_close(c, "info");