X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fhttp.c;h=e4c300146e7e2409edd3b8ec30cbda22dd4e4c56;hp=6819e5f48d1a7125a69a56e7a5f87e2f7c7955e4;hb=69b1d8e7b437179163fe97b7cbead51a56835f2a;hpb=eeec1fcf0dad0e7d431c2494c8e65560563f3aae diff --git a/src/http.c b/src/http.c index 6819e5f..e4c3001 100644 --- a/src/http.c +++ b/src/http.c @@ -338,7 +338,7 @@ Z_GDU *z_get_HTTP_Request_uri(ODR odr, const char *uri, const char *args, return p; } -Z_GDU *z_get_HTTP_Response(ODR o, int code) +Z_GDU *z_get_HTTP_Response_details(ODR o, int code, const char *details) { Z_GDU *p = (Z_GDU *) odr_malloc(o, sizeof(*p)); Z_HTTP_Response *hres; @@ -355,7 +355,10 @@ Z_GDU *z_get_HTTP_Response(ODR o, int code) "YAZ/" YAZ_VERSION); if (code != 200) { - hres->content_buf = (char*) odr_malloc(o, 400); + const char *http_err = z_HTTP_errmsg(code); + size_t sz = 400 + strlen(http_err) + (details ? + strlen(details) : 0); + hres->content_buf = (char*) odr_malloc(o, sz); sprintf(hres->content_buf, "\n" @@ -367,16 +370,26 @@ Z_GDU *z_get_HTTP_Response(ODR o, int code) "

YAZ " YAZ_VERSION "

\n" "

Error: %d

\n" - "

Description: %.50s

\n" + "

Description: %s

\n", code, http_err); + if (details) + { + sprintf(hres->content_buf + strlen(hres->content_buf), + "

Details: %s

\n", details); + } + sprintf(hres->content_buf + strlen(hres->content_buf), " \n" - "\n", - code, z_HTTP_errmsg(code)); + "\n"); hres->content_len = strlen(hres->content_buf); z_HTTP_header_add(o, &hres->headers, "Content-Type", "text/html"); } return p; } +Z_GDU *z_get_HTTP_Response(ODR o, int code) +{ + return z_get_HTTP_Response_details(o, code, 0); +} + const char *z_HTTP_errmsg(int code) { switch (code) @@ -597,7 +610,7 @@ int yaz_encode_http_response(ODR o, Z_HTTP_Response *hr) odr_write2(o, "\r\n", 2); } } - odr_write(o, (unsigned char *) "\r\n", 2); + odr_write2(o, "\r\n", 2); if (hr->content_buf) odr_write2(o, hr->content_buf, hr->content_len); if (o->direction == ODR_PRINT)