Log up to 1K of buffer content if decoding fails
[yazpp-moved-to-github.git] / src / yaz-z-assoc.cpp
index e389184..e268248 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the yazpp toolkit.
- * Copyright (C) 1998-2011 Index Data and Mike Taylor
+ * Copyright (C) 1998-2012 Index Data and Mike Taylor
  * See the file LICENSE for details.
  */
 
@@ -218,7 +218,15 @@ Z_GDU *Z_Assoc::decode_GDU(const char *buf, int len)
         yaz_log(YLOG_LOG, "PDU decode failed '%s' near byte %ld. Element %s",
                 odr_errmsg(odr_geterror(m_odr_in)),
                 (long) odr_offset(m_odr_in),
-                element ? element : "unknown");
+                element && *element ? element : "unknown");
+        yaz_log(YLOG_LOG, "Buffer length: %d", (int) len);
+        if (len > 0)
+        {
+            WRBUF w = wrbuf_alloc();
+            wrbuf_write_escaped(w, buf, len > 1024 ? 1024 : len);
+            yaz_log(YLOG_LOG, "Buffer bytes: %s", wrbuf_cstr(w));
+            wrbuf_destroy(w);
+        }
         yaz_log(YLOG_LOG, "PDU dump:");
         odr_dumpBER(yaz_log_file(), buf, len);
         return 0;