From e5c4e6d4c245ae26a73953cbc5261929f55c103f Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Wed, 11 Dec 2013 15:48:13 +0100 Subject: [PATCH 1/1] Fix truncation of HTTP body log Use the stream write instead of odr_printf which has a 4K tmp buffer. --- src/http.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/http.c b/src/http.c index 642c3ad..96445ed 100644 --- a/src/http.c +++ b/src/http.c @@ -547,23 +547,24 @@ int yaz_decode_http_request(ODR o, Z_HTTP_Request **hr_p) static void dump_http_package(ODR o, const char *buf, size_t len) { - int i; + int i, limit = 8192; for (i = 0; ; i++) { if (i == len) { + o->op->stream_write(o, o->op->print, ODR_VISIBLESTRING, buf, i); odr_printf(o, "%.*s\n", i, buf); break; } - else if (i > 8192) + else if (i >= limit) { - odr_printf(o, "%.*s\n", i, buf); - odr_printf(o, "(truncated\n", (long) len); + o->op->stream_write(o, o->op->print, ODR_VISIBLESTRING, buf, i); + odr_printf(o, "(truncated from %ld to %d\n", (long) len, i); break; } else if (buf[i] == 0) { - odr_printf(o, "%.*s\n", i, buf); + o->op->stream_write(o, o->op->print, ODR_VISIBLESTRING, buf, i); odr_printf(o, "(binary data)\n", (long) len); break; } -- 1.7.10.4