From c50a3a4cf22ccd05ad1cfae052dd3f6583bfb70c Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 24 Sep 2013 10:27:20 +0200 Subject: [PATCH] New utility z_get_HTTP_Response_server which allows both HTTP server name and HTTP server URL to be given in response. --- include/yaz/zgdu.h | 4 ++++ src/http.c | 20 +++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/include/yaz/zgdu.h b/include/yaz/zgdu.h index 0a626ea..4074f15 100644 --- a/include/yaz/zgdu.h +++ b/include/yaz/zgdu.h @@ -94,6 +94,10 @@ YAZ_EXPORT const char *z_HTTP_errmsg(int code); YAZ_EXPORT Z_GDU *z_get_HTTP_Response(ODR o, int code); YAZ_EXPORT Z_GDU *z_get_HTTP_Response_details(ODR o, int code, const char *details); +YAZ_EXPORT Z_GDU *z_get_HTTP_Response_server(ODR o, + int code, const char *details, + const char *server, + const char *server_url); YAZ_EXPORT Z_GDU *z_get_HTTP_Request(ODR o); YAZ_EXPORT Z_GDU *z_get_HTTP_Request_host_path(ODR odr, const char *host, diff --git a/src/http.c b/src/http.c index 746f3e1..07005f5 100644 --- a/src/http.c +++ b/src/http.c @@ -338,7 +338,8 @@ Z_GDU *z_get_HTTP_Request_uri(ODR odr, const char *uri, const char *args, return p; } -Z_GDU *z_get_HTTP_Response_details(ODR o, int code, const char *details) +Z_GDU *z_get_HTTP_Response_server(ODR o, int code, const char *details, + const char *server, const char *server_url) { Z_GDU *p = (Z_GDU *) odr_malloc(o, sizeof(*p)); Z_HTTP_Response *hres; @@ -351,8 +352,7 @@ Z_GDU *z_get_HTTP_Response_details(ODR o, int code, const char *details) hres->content_buf = 0; hres->code = code; hres->version = "1.1"; - z_HTTP_header_add(o, &hres->headers, "Server", - "YAZ/" YAZ_VERSION); + z_HTTP_header_add(o, &hres->headers, "Server", server); if (code != 200) { const char *http_err = z_HTTP_errmsg(code); @@ -364,13 +364,13 @@ Z_GDU *z_get_HTTP_Response_details(ODR o, int code, const char *details) " \"http://www.w3.org/TR/html4/strict.dtd\">\n" "\n" " \n" - " YAZ " YAZ_VERSION "\n" + " %s\n" " \n" " \n" - "

YAZ " - YAZ_VERSION "

\n" + "

%s

\n" "

Error: %d

\n" - "

Description: %s

\n", code, http_err); + "

Description: %s

\n", server, server_url, server, + code, http_err); if (details) { sprintf(hres->content_buf + strlen(hres->content_buf), @@ -385,6 +385,12 @@ Z_GDU *z_get_HTTP_Response_details(ODR o, int code, const char *details) return p; } +Z_GDU *z_get_HTTP_Response_details(ODR o, int code, const char *details) +{ + return z_get_HTTP_Response_server(o, code, details, "YAZ/" YAZ_VERSION, + "http://www.indexdata.com/yaz"); +} + Z_GDU *z_get_HTTP_Response(ODR o, int code) { return z_get_HTTP_Response_details(o, code, 0); -- 1.7.10.4